为什么要学WPF:
由于接下来的工作会做一些桌面软件,对博主来说可以快速上手的就是之前已经有过一点经验的WINFORM,和WPF,所以面临着选择问题。 网上关于WINFORM,WPF的论战很多。有说WINFORM不行的,有说WPF不行的,有说两个都不行的,当然不能被这些话绕晕,既然感兴趣,自己试试吧! 于是先看了很多WPF的介绍资料,之后就开始了入门学习。 本文分两个部分: 一:解析WPF初始提供的文件。 二:HELLO WORLD 部分。
WPF初始文件:
工程创建后,默认生成的XAML 与CS 代码如下:
namespace WpfApplication1{ ////// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } }}
XAML部分:第2,3行即引入命名空间,博主刚看到命名空间居然是URL后,一愣,后来查资料发现原来这样做的目的是保证命名空间唯一。 第3行中的x:是以后用"x"来代指此命名空间的意思。把第1,3行的"x"都改成"y"也是可以的。 第1行:这个Window 和 HTML中的 html一样,只允许有最上层的一个,即代表XAML文件结束。同时,这一行将生成一个MainWindow类,我们打开CS文件可以发现文件中也有个MainWindow类,这两部分之所以不冲突就是C# partial 关键字的功劳啦。即对应着HTML中的 博主在其中随便输入了 Hello 效果如下图
HELLO WORDL:
目的:输入框输入文字,即可根据关键字模糊查找人的信息。 直接贴代码了: XAML部分:
页面逻辑部分:
namespace WpfHelloWorld{ ////// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { IPersonDatabase databaseInstance; public MainWindow() { databaseInstance = new DataBase(); InitializeComponent(); } private void personInfoLoad(object sender, RoutedEventArgs e) { var personInfoList = databaseInstance.RetrivePersonByName(PersonKeywordInput.Text.Trim()); var personInfoBuilder = new StringBuilder(); foreach (var item in personInfoList) { personInfoBuilder.AppendLine(String.Format("ID = {0} NAME = {1}", item.Id, item.Name)); } PersonInfoArea.Text = personInfoBuilder.ToString(); } }}
“人的信息“部分,简单用于一个List模拟了数据源,然后实现了IPersonDatabase接口,可以根据关键字检索人:
public interface IPersonDatabase{ ListRetrivePersonByName(string keyWord);}public class DataBase : IPersonDatabase{ List personRepository { get; set; } public DataBase() { var test = new Person { Id = 2, Name = "23"}; personRepository = new List (); personRepository.Add(new Person() { Id = 1, Name = "张一" }); personRepository.Add(new Person() { Id = 2, Name = "张二"}); personRepository.Add(new Person() { Id = 3, Name = "张三"}); personRepository.Add(new Person() { Id = 4, Name = "王一"}); personRepository.Add(new Person() { Id = 5, Name = "王二"}); personRepository.Add(new Person() { Id = 6, Name = "王三"}); personRepository.Add(new Person() { Id = 7, Name = "李一"}); personRepository.Add(new Person() { Id = 8, Name = "李二" }); personRepository.Add(new Person() { Id = 9, Name = "李三" }); personRepository.Add(new Person() { Id = 10, Name = "刘一"}); personRepository.Add(new Person() { Id = 11, Name = "刘二" }); personRepository.Add(new Person() { Id = 12, Name = "刘三" }); personRepository.Add(new Person() { Id = 13, Name = "刘四" }); personRepository.Add(new Person() { Id = 14, Name = "刘五" }); } public List RetrivePersonByName(string keyWord) { return personRepository.Where(item => item.Name.Contains(keyWord)).ToList(); }}
最终效果:
结论:
WPF是非常不错的,需要坚持下去,下篇WPF文章将会写到对于XAML的理解和WPF LAYOUT。