20171009-20171015C#WPF工作学习周总结
来源:互联网 发布:java按空格分割字符串 编辑:程序博客网 时间:2024/06/05 13:36
WPF学习
现在设计师和程序员一起工作,共同维护软件的版本,只是他们使用的软件不一样—-设计师使用Blend(Expression设计套件工具中的一个)来设计UI,程序员使用Visual Studio 开发后台逻辑应用代码。Blend就像PhotoShop等设计工具,因此可以最大限度的发挥设计师的特长。使用它,设计师不仅可以设计出绚丽多彩的UI,还可以让UI上包含动画—–虽然程序员也可以做到这些,但从专业性,时间开销以及技术要求上显然是划不来的。更重要的是,这些绚丽的UI动画都会以XMAL的形式直接保存进项目,无需转化就可以直接编译,节省了大量的时间和成本。
XMAL是一种单纯的声明型语言,这就是说它只能用来声明一些UI元素、绘制UI和动画(在XMAL中实现动画是不需要编程的),根本无法在其中加入程序逻辑,这就强制的把逻辑代码从UI中赶走了。
从零开始学XAML
XAML是由XML派生出来的语言,所以有很多在XML中的概念在XAML中是通用的。比如使用标签声明一个元素(每一个元素对应内存中的一个对象)时,需要使用其实标签\和结束标签\.
XAML是一种声明式语言,当你看见一个标签,就证明你声明了一个对象;
来看一段WPF的代码~
在VS中,新建一个WPF程序,便会自动生成如下代码:
<Window x:Class="WpfApplication2.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window2" Height="300" Width="300"> <Grid> </Grid></Window>
和xml类似,有标签的概念,当然,这里Title、Width、Height一看就知道和Window的Property对象对应的。中间两行(即两个xmlns)是在声明名称空间。最上面一行是在使用名为class的Attribute,这个Attribute来自于X:前缀所对应的名称空间。下面仔细解释。
前面已经说过,XMAL语言是从XML语言派生而来的。XML有一个功能就是可以在XML文档的标签内使用xmlns特征来定义名称空间(NameSpace),XML也就是XML–NameSpace的缩写。定义名称空间的好处就是,当来源不同的类重名时,可以使用名称空间加以区分。xmlns特征的语法如下:
xmlns[:可选的映射前缀]="名称空间"
xmlns后可以跟一个可选的映射前缀,之前用冒号隔开。如果没有写可选映射的前缀,那就意味着所有来自这个名称空间的所有标签都不用加这个前缀,这个没有映射的命名空间称为“默认的命名空间”,默认名称空间只能有一个,而且应该选择其中使用最频繁的名称空间来作为默认命名空间。
上述例子中,\和\来自于第二行声明的默认命名空间,而第一行的CLASS特征则来来自于三行的中x:前缀对应的名称空间。
XAML中引用外来程序集和其中.NET名称空间的语法和C#是不一样的。在C#中,如果想使用System.Windows.Control名称空间内的Button类,需要先把包含System.Windows.Control名称空间的程序集PresentationFramework.dll添加引用到项目中,然后再用C#代码顶部写上一句:using System.Windows.Control;。在XAML中做同样的事情也需要添加对程序集的引用,然后再在根元素的起始标签中写上一句:xmlns:c=”clr-namespace:System.Windows.Control;assembly=PresentationFramework”。c是映射的前缀,换成其它字符串也可以。因为button来自前缀为c的命名空间,所以在使用button的时候就要使用\….\。
为什么名称空间看上去想一个网站地址呢?
其实把它copy到浏览器地址栏尝试跳转也不会打开网页。这里只是XAML解释器的一个硬性编码(hard-coding),只要见到这些固定的字符串,就会把一系列的程序集和程序集中包含的名称空间引入进来。
WPF学习——系统地学习XAML语法
与传统的设计思维不同,XAML使用树形逻辑结构来描述UI。
注意:
XAML中对对象赋值总共有两种方法:
A:使用字符串进行简单赋值。
B:使用属性元素(Property Element)进行复杂赋值。
本周的工作主要做了一个简易版WPF的计算器,大概了解了WPF中的布局,和HTML+CSS很像。另外,WPF中确实有单独的用于布局的代码块,这里,可以说二者非常相似了。
第二个就是做了仿QQ2013的登录界面,用到了Grid,StackPanel,TextBox,Button等一些空间,并尝试设置自定义样式,利用属性值做修改。
另外,一个附加的任务,做简易版的虚拟键盘,应该是要用到SendInput
GetKeyState
MapVirtualKe
的API,还要用到数据绑定等等知识,估计不简单。。。
- 20171009-20171015C#WPF工作学习周总结
- 20171016-20171022C#WPF工作学习周总结
- WPF布局学习总结
- wpf 学习总结
- 第二周工作学习总结
- 第三周工作学习总结
- 深入浅出学WPF窗口- [WPF学习总结]
- 深入浅出学WPF窗口- [WPF学习总结]
- WPF动画基础学习总结
- WCF+WPF学习要点总结
- C#/WPF学习笔记:起始
- C#WPF应用程序学习杂记
- 九月第2周工作学习总结
- 20170717-20170723C#工作学习周总结
- 20170717-20170723C#工作学习周总结
- 20170724-20170730C#工作学习周总结
- 20170731-20170806C#工作学习周总结
- 20170807-20170813C#工作学习周总结
- FFMPEG视音频编解码零基础学习方法
- 关于static关键字的详解
- ini格式相关
- 二叉树专题-验证二叉查找树
- Python中的split()函数的用法
- 20171009-20171015C#WPF工作学习周总结
- [LeetCode]28. Implement strStr()
- 2017 新披露 :平台都用贝叶斯算法
- Android设计模式之——原型模式
- 微信小程序API之网络(二)上传数据
- rex 上传文件并远程执行
- android面试-垃圾回收算法(久邦涉及到)
- ubuntu14.04设置静态ip
- JavaScript学习——对象