WPF入门(一) 谈Xaml
wpf吧
全部回复
仅看楼主
level 10
狠有毅毅 楼主
楼主打算写一套教程帮助新人们入门WPF 欢迎指点
2013年06月10日 14点06分 1
level 10
狠有毅毅 楼主

虽然不知道各位WPF新手或是老手,是因为什么步入WPF的世界的。是因为生动的UI?亦或是因为内部机制的改善(Binding, DependencyObject, RoutedEvents, RoutedCommands等等)?还是因为厌倦了Winform呢?Windows Presentation Foundation,有兴趣的朋友试着研究这个技术,你会有颇多新的收获。
入门WPF至少需要一门.NET语言的基础(C#, VB.NET, Managed C++等),楼主在写教程的时候使用的是C#,所以请务必拥有足够的C#基础再来看这个教程。另外楼主使用的ide是Visual Studio 2012,但是从3.5框架开始就支持WPF了,不过仍然推荐使用Visual Studio 2010以上的版本来编写WPF。
首先,楼主先简单介绍一下Xaml(Extensible Application MarkUp Language),Xaml是目前微软大一统的标记扩展语言,其实Xaml就是XML的衍生,学过Xml的盆友看到Xaml的格式一定不会陌生。如今IT界千变万化,很快就会诞生一门新技术,但是在微软的技术中,Xaml已经成为了共有的一部分(设计UI),不论是WPF, Silverlight, Windows Store, Windows Phone其中都运用了Xaml技术,所以Xaml在短时间内至少不会淘汰。
2013年06月10日 14点06分 2
level 10
狠有毅毅 楼主

Xaml的几个优点:
1、Xaml能比较轻松地设计出专业的UI和动画
2、Xaml简单易懂,层次清晰
3、Xaml在GUI中使用的是DirectX的api,效果比以往的GDI高出许多
Etc…..
楼主觉得通过实际的代码理解一门技术是最好的,所以楼主会通过一些实例来进行讲解。
下面我们新建一个WPF项目来看看Xaml到底是怎样的。
学习Xaml之前,楼主强烈建议大家手动输入Xaml代码,而尽量避免控件的拖曳,因为WPF的布局和Winform很不一样,这个大家以后就会慢慢明白的。
2013年06月10日 14点06分 3
level 10
狠有毅毅 楼主

1、打开VS,选择文件->新建->语言选择C#->Windows->WPF应用程序->写个名字->点击确定
2013年06月10日 14点06分 4
你这个VS是2014版的?是绿色免费完整版的吗?
2014年06月27日 09点06分
回复 泡泡根强大 :VS2012,楼上说的
2014年06月27日 10点06分
回复
���ݸ�ǿ��
:2014没出,哈哈。
2015年01月30日 01点01分
回复
������������
:有2015 Preview...
2015年02月15日 12点02分
level 10
狠有毅毅 楼主
我们可以看到一段Xaml代码(MainWindow.xaml)
2013年06月10日 14点06分 5
level 10
狠有毅毅 楼主

2、我们添加一段代码
2013年06月10日 14点06分 6
level 10
狠有毅毅 楼主

运行后效果如下
2013年06月10日 14点06分 7
level 10
狠有毅毅 楼主

可以看到,这个按钮占据了整个窗口,这个和以往的Windows Form不太一样,当然这个其实是因为WPF的布局和以往的Winform很不一样,这里这个Button之所以是这样的效果其实是因为HorizontalAlignment和VerticalAlignment默认为Stretch的缘故,这个楼主稍后会说。这个布局有什么好处呢,如果我们最大化窗体,发现这个Button仍然是紧紧地贴着窗体。可见WPF的布局方式一般不使用坐标制,是种非常灵活的布局方式。
2013年06月10日 14点06分 8
level 10
狠有毅毅 楼主

3、下面我们再添加一些代码上去
2013年06月10日 14点06分 9
level 10
狠有毅毅 楼主

这个时候这个Button才显得更像按钮,而且不论你如何更改窗口的尺寸,Button始终在中央,明明没有设置坐标却达到了我们最希望达到的效果,这就是WPF的布局。
现在解释一下刚才那段代码,学过ASP.NET WebForm的也许很熟悉,这个和asp.net控件十分的相似,都是一些自定义的属性,可以写在Xaml中,而且布局的方式和CSS有几分类似,HorizontalAlignment表示该控件在父控件中的水平排列方式,VerticalAlignment则表示垂直排列方式,Padding的话,学过CSS的应该很清楚,就是指控件的边框内部与内容的距离,分为四个方向,顺序是’左上右下’,这里是20 10 说明左右是20 上下是10,如果写成10,那么默认四个方向都是10,也可以写成20 10 15 25,这样就分别指定了4个方向,大家可以尝试一下,看一下效果。
2013年06月10日 14点06分 11
css不是上右下左吗。。。
2015年01月30日 01点01分
level 10
狠有毅毅 楼主

不知道大家有没有注意Xaml根节点的这些代码
首先Window就是指窗体本身这个对象,也就是Window是这个程序的最顶级元素(当然也可以是其他的,诸如Page, UserControl或者自定义的其他类,这个以后会说明),那么Title, Height, Width这些就是Window类的属性,和刚才Button的Padding, HorizontalAlignment, VerticalAlignment非常类似。x:Class=”Begin_WPF.MainWindow”这个是指该窗体的后台逻辑代码所对应的类文件,熟悉Winform的应该都很清楚,.xaml文件就类似Winform的窗体设计器(.design.cs文件),而xaml.cs就类似Winform的后台的.cs文件。.xaml负责控制UI,而.xaml.cs负责对应的后台逻辑。
2013年06月10日 14点06分 12
level 10
狠有毅毅 楼主

Xmlns是什么意思呢?之前说过Xaml是由Xml衍生过来的,而XML有一个特性就是可以在XML文档的标签上使用xmlns特征来定义名称空间(XML-Namespace的缩写)。定义名称空间的好处就是,可以把该名称空间的一些类用在Xaml上,并且当来源不同的类重名时,可以使用名称空间加以区分。正规的语法格式:
xmlns[:可选的映射前缀] = “命名空间”
2013年06月10日 14点06分 13
level 10
狠有毅毅 楼主

接下来我们来做个实验,如果我们把代码改成如下所示
会发现编译报错,为什么呢?这是因为本来这个命名空间是被定义成默认的,所以Window、Grid、Button这些在该空间中的类是不用添加前缀的,然而这里我手动设置了前缀,则我们也必须要给这些类手动指定前缀,如下所示:
2013年06月10日 14点06分 14
level 10
狠有毅毅 楼主

这个时候错误没有了,想必通过这个例子,聪慧的大家马上就能明白这个xmlns的作用了吧~~
当然我们还可以这样修改,这里我只修改一个Button,大家注意看下代码~
2013年06月10日 14点06分 15
level 10
狠有毅毅 楼主

楼主开此帖是希望能活跃一下WPF吧的气氛,希望有更多的盆友一起加入来探讨WPF的世界,楼主写的这些东西 相信已经有很多朋友都学过了 但是楼主仍然希望从比较基础的东西写起 这样能方便一些新入门的盆友们。另外本人时间有限,希望能有大牛来协助楼主一起完成一些教程~~有意向的可以Hi我或者在帖子中回复~万分感谢~
如果大伙喜欢的话 楼主会在今后陆续讲解各类WPF控件以及WPF的一些机制(和Winform不同)
2013年06月10日 14点06分 18
楼主好人,支持~~
2013年06月21日 02点06分
好人一生平安
2015年05月18日 01点05分
回复@狠有毅毅 :楼主怎么不更了[泪] ——————来自能挡子弹不能扭,能砸核桃不能舔,能当砧板不能泡的诺记黑科技mini Oreo NOKIA ᴵᵘᵐᶤᵃ 830
2016年02月29日 11点02分
level 10
楼主好人啊,一生平安
2013年06月10日 16点06分 19
level 11
2013年06月11日 03点06分 20
level 4
前排
,卖花生,瓜子~
2013年06月11日 04点06分 21
level 6
[抱枕]楼主会不会给richtextbox里的文本添加书签功能
2013年06月12日 02点06分 22
回复 1002048098 :[委屈] 没人教这个 不会
2013年09月15日 14点09分
回复 1002048098 :这个特殊符号只是你知道吧,而且你加多个书签呢 是不是没个都加不同的特殊符号呢,而且你还需要隐藏它!
2013年09月16日 03点09分
level 6
我是新人
2013年06月12日 02点06分 23
1 2 3 4 5 尾页