WPF一篇解决

之前常常使用的是Winform做窗体应用,突然接到一个被公司裁掉的同事手头穿下来的一套祖传WPF项目,于是决定用1天的时间熟悉熟悉WPF,学一天的时间足够给他祖传的代码修修改改了。

初识WPF的界面感觉比WinForm做的好看,仔细想想这个也是应该的,MFC->winform->wpf,没有进步,微软家的开发团队就变成吃白食的了。.NET Framework 3.0以后才有,因此需要安装高版本框架。

细看WPF的语法内容,主要是基于XAML技术,其实就是把之前的窗体写在窗体类中用XAML将其分离,好处就是,前端的可以安安心心的画图了。当然技术的内部实现也没有细细研究,猜想了一下感觉有点类似于用的一个脚本翻译器不停的翻译XAML脚本。

下面是重点

控件 contorl

这个控件的定义和Winfrom中是一样的,将一类相同操作的抽象。
https://zh.wikipedia.org/zh-hans/%E6%8E%A7%E4%BB%B6

控件被创建后命名很重要,当前页被用汉语拼音首字母做控件名的同事坑过,所以避免坑三个月后自己和“心爱”的同事,请远离不规范命名。

说到控件就不得不说Focus,焦点,控件是否处于交互状态就是就是由这个Focus决定,
EX:要讲一个按键“F5”传给窗体上一个控件,就需要先让这个控件获得焦点,而获得焦点最常见的方法就是用鼠标点击这个控件,那么这里又想把F5传递给主窗体,那么如何做呢,可以用一个一个事件将F5传递给主窗体

布局中的控件,最常用的就是Width和Height,这里是以容器的左上角为原点,左到右,上到下依次增大。

是控件就必然需要事件的支持,界面和逻辑的联系就是在于一个事件,有实践,必然就有回调函数。
事件调用中最常见的参数就是Sender,其实就是把触发事件的对象自己传递过去,因此这个参数一般是用Object传递过去。
Sender常见的用法:触发事件的控件,得到控件先做类型转换,数据绑定的时候用到。这种用法可以让一个事件回调函数被多个控件的事件调用。

手写XMAL

学从难出学,用从易处用,多么好的一句话,一天的时间不多,但如果只是拖拖控件什么的,那就太太多了,完全是在消磨时间。
控件中常用的属性是下面几个
IsEnable 是否使能,使能简单理解就是使其能使用
Visibility 可见
Background背景格式
Foreground 填充颜色
FontSize 字体大小
IsReadOnly 只读
TextWrapping 折行
MaxLength最大数量

常用控件

Button
TextBox
PasswordBox
TextBlock
RadionButton
Image
CheckBox
Grid
ListBox
StackPlanel
Menu
ToolBar

可空类型

在WPF中很多控件的传入值和返回值是可空类型
int i;
这时 i的值是默认值0;
int? i;
这时i 只是一个标签 i=NUll,在没有赋值时去调用它做运算,运行时是回报错的。
第一个i是值类型,第二个i是引用类型
猜想啊。底层是把原本放在栈中的一个值放入了堆中,而这个i只是指向堆中的一个地址

控件细节用法

RadioButton 使用GroupName进行分组
DatePicker日期控件 不选用任何日期时DateTime为Null
DateTime.ToDay 只显示日期 New显示到时分秒
Image 控件 source 显示的图片的路径
ProgressBar 进度条 Mininum Maximum Value Height
IsIndeterminate不确定模式,滚动条会不停运动

页面控制

控制子控件的大小和位置格式
常用的控件有
StackPlane堆叠排列
Orienttion Horizontal
button中Content可以是一副图片,文本框等等只能设置一个又想设置两个
VerticalAlignment布局
stackPanel做大房东

Grid 表格
columDefinitions列 Width
RowDefiniton行 Hight
Margin 边缘距离
将控件固定到对应的表格中,需要使用时要绑定附加属性
Ex:TextBox text=“00” Grid.Row=“1” Gide.Column=“1”

DockPanel 靠边容器
DockPanle.Dock 可以选择上下左右机种不同的形式

多窗口

在项目下创建一个新的WPF窗体,在启动的一个窗体中New,然后调用Show方法就可以使用

传入值

可以在够着函数中传入,和winForm一样

返回值

DialogResult = true;这个值设定后,窗体会自动调用Close;

初略看去其实Wpf和Winform没有太大区别,winForm可以干的是Wpf全部都可以干,同时Wpf更加灵活,所有后期可以说适当更新技术,与时俱进。
上面实现的代码可查看我的下载

你可能感兴趣的:(c#编程)