追的剧已经赶上更新的速度了,突然觉得一下子就闲了。趁着这点时间,刚好学点 WPF 。看到这边,好多人估计得感叹技术宅约等于单身狗,哈哈。好了,赶紧进入学习状态。

关注 WPF 或者说对它感兴趣其实多半就是为了自己对美好事物的追求。虽然这么说好像有点装(B),但确实如此。看惯了公司某个 client 端的 WinForm 界面,实在不能忍。当然, WinForm 也可以通过其他第三方组件来美化界面,比如 DevExpress 、DotNetbar 。这也挺好,但我总执着于总会有更好的出现。甚至能秒杀或者有一劳永逸的功效。所以我搜出了 WPF 。对它感兴趣有以下几点:

1.  WPF 是一个采用 XAML 的类似于 WinForm 的技术。

2. 学习它,也间接学习到了微软基于 Window8 平板电脑 、Windows Phone 手机开发 (因为两者都使用的是微软的 XAML 技术)。

3. 即使对 WinForm 开发不熟悉,学 WPF 后再学 WinForm 效果也是事半功倍的。 

毕竟我是刚学它,接下来的内容槽点有可能也不少,不过欢迎狂喷。


入门的第一个 WPF 程序:

创建它,步骤都在图里,别问我怎么点出这个窗口的。

创建完成之后其实有个比较有意思的发现,这跟在创建 Web 窗体实在太像了,可以直接通过类似 HTML 来直接创建一些控件

 控件及属性的一些简单用法:

<Window x:Class="grid.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<!--行和列的宽度默认宽度为大家平分-->
<Grid.ColumnDefinitions>
<!--列-->
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!--行-->
<RowDefinition Height="200"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<!--这种写法为附加属性 -->
<Button Grid.Row="1" Grid.Column="1"></Button>
<TextBox Text="hello" Grid.Row="0" Grid.Column="2" Background="Red"></TextBox>
<Image Source="1.jpg" Grid.Row="3"></Image>
</Grid>
</Window>

附图:(纯粹是为了熟悉,而非美观)

以上的代码实例其实也就是 WPF 的 Grid 布局,接下来还有一种有点响应式样子的布局格式 StackPanel 。

StackPanel   :默认为自动从上往下排列  ,并且可以随着窗体大小而自动变化[类似响应式]

如果需要更改内容的展现方式,可以通过Orientation 来设置纵向排列还是水平排列


第一小段学习完成,接下来准备写一个简单的登录窗口,以及通过后台自动创建控件完成一个类似连连看游戏的简单布局。

周末充电之WPF(一).初试牛刀的更多相关文章

  1. iOS 视图调试器(Debug View Hierarchy) 之 初试牛刀

    参考:http://blog.csdn.net/th_gsb/article/details/44856795 由于iOS的界面开发大多都是用代码实现的,编写的时候,那就是看不见摸不着的情况.所以,如 ...

  2. redis初试牛刀

    先来无事就学学redis.可是并没有想的那么美好.首先要解释一下,redis主流是安装在lunx系统中的,甚至官网直接没有给出windows版本.要下载windows只能去所谓的githup.好吧我在 ...

  3. python初试牛刀

    需求:在L7的一台机器上做nginx配置,然后代码分发到别的所有的机器上.由于目录中有很多配置文件,而且防止误操作,需要修改配置之前先备份原配置.然后需要在运行修改配置的脚本之前,先弹出界面,告知操作 ...

  4. 周末充电之WPF(四).多窗口之间操作

    多窗口实例: 1.在多个窗口的情况下如何自定义指定要启动的窗口程序 <Application x:Class="toolbar.App" xmlns="http:/ ...

  5. 周末充电之WPF(三 ) .后台动态生成控件

    布局 -连连看: 代码: private void Window_Loaded_1(object sender, RoutedEventArgs e) { //动态创建行 ; i < ; i++ ...

  6. 周末充电之WPF(二 ) .窗口的布局

    登录窗口布局:[ Grid 布局 -Grid.RowDefinitions / Grid.ColumnDefinitions] 代码如下: <Window x:Class="login ...

  7. HBase 2、HBase安装与初试牛刀

    官方帮助文档:http://hbase.apache.org/book.html  PDF:http://hbase.apache.org/apache_hbase_reference_guide.p ...

  8. PyQt4 初试牛刀一

    建立了一个MainWindow,创建最基本的菜单栏.状态栏.工具栏,并重新定义了"X"关闭的默认行为. # -*- coding: utf-8 -*- import sys fro ...

  9. PyQt4 初试牛刀二

    一.最小话托盘后,调用showNormal()后窗口不刷新,解决办法如下: 重写showNormal 方法,调用父类方法后,repaint窗体 def showNormal(self):     su ...

随机推荐

  1. .net软件自动化测试笔记(API-2)

    1.9获得测试运行时间如何获得测试运行的总时间设计:DateTime.Now属性记录测试开始运行时间,以及测试结束时间,用一个TimeSpan对象计算本次运行的总时间 DateTime starTim ...

  2. D3D12 图形编程

    D3D 11到D3D 12的重大改进 Direct3D 12 的编程模型和 Direct3D 11大相径庭.在Direct3D 12中,应用程序和硬件靠得近多了,这在以前是从未有过的. 这让D3D12 ...

  3. UVa10534 - Wavio Sequence(LIS)

    题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减.注意,严格递增意味着该序列中的两个相邻数不能相同.n&l ...

  4. repeater中后台动态为控件添加属性

    在此贴出repeater中的ItemDataBound事件中的代码: private void ItemDataBound(object sender, RepeaterItemEventArgs e ...

  5. 人工神经网络(Artificial Neural Networks)

    人工神经网络的产生一定程度上受生物学的启发,因为生物的学习系统是由相互连接的神经元相互连接的神经元组成的复杂网络.而人工神经网络跟这个差不多,它是一系列简单的单元相互密集连接而成的.其中每个单元有一定 ...

  6. Block介绍(二)内存管理与其他特性

    我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题.这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因. 一.block放在哪里 我们针对不同情 ...

  7. CAS认证(1):流程详解

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. js返回上一页方法区别

    history.back(-1):直接返回当前页的上一页,数据全部消息,是个新页面 history.go(-1):也是返回当前页的上一页,不过表单里的数据全部还在

  9. android开发Proguard混淆与反射

    http://charles-tanchao.diandian.com/post/2012-05-24/20118715 由于前面开发数据操作类,所以利用反射,封装了一个BaseDao,本来在平常的时 ...

  10. 遍历map的四方方法

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...