这几天抽空在学习,原本以为与WinForm的主要区别只是在表现力(动画)方面,但真正了解学习时,才发现其实在编码实现上与WinForm也只能说是少部分相同(控件和窗体有着差不多的事件和属性),也感觉有些实现(数据绑定、控件的使用)不是很好理解。本文主要是分享下,我从网上找的一个""项目源码基础上学习所得,先看下截图:
(一)主界面
(二)图片预览界面
主界面的界面代码,如下:
15 6 157 148 9 10 11 12 13 16 10217 2118 19 20 22 2623 24 25 27 28 29 43 44 45 4846 47 49 50 56 5751 5552 5453 58 10159 6360 61 62 64 67 7868 74 7769 7370 7271 79 82 85 88 8990 93 96 99 100
对上面的代码说明如下:
1.x:Class="PhotoGallery.MainPage" ——相当于WebForm中的CodeBehind属性,当前界面的后置类。
2.<Page.Resources>
<LinearGradientBrush x:Key="shinyBrush" StartPoint="0,0" EndPoint="0,1">... ——相当于web中定义的一个样式(而以后的文章中会提到的资源词典(ResourceDictionary)文件相当于是一个样式表,可以在不同的界面中使用),名为shinyBrush的笔刷,可以在当前界面的任何控件上使用,如设置按钮的背景色等。3.<Grid.RowDefinitions>
<RowDefinition Height="50"/> <RowDefinition/> <RowDefinition Height="55"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="200"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> </Grid.ColumnDefinitions> ——Grid是一个类似于web中的table标签的表格控件, RowDefinitions意为行定义,这段代码就表示定义(创建)一个3行3列的表格。<Rectangle Grid.Row="2" Grid.ColumnSpan="3" Fill="{StaticResource shinyBrush}"/>——表示在第三行有一块区域并跨越3列, Grid.Row对应的是行的索引。后台部分代码
1 ///2 /// 按比例放大 3 /// 4 ScaleTransform st = new ScaleTransform(3, 3); 5 object dummyNode = null; 6 Photos photos = new Photos(); 7 8 #region Window Management 9 10 public MainPage() 11 { 12 InitializeComponent(); 13 photos.ItemsUpdated += delegate { this.Dispatcher.Invoke(DispatcherPriority.Normal, new ThreadStart(Refresh)); }; 14 Application.Current.Properties["favoritesItem"] = favoritesItem; 15 Application.Current.Properties["test_Info"] = DateTime.Now.ToString(); 16 }
Application.Current.Properties["test_Info"] = DateTime.Now.ToString(); ——其用法和作用,我目前理解为跟web中的Session类似,即在当前应用程序内的任何界面都可以访问获得的全局集合字典。
最后,附上源码(源码你仔细看下应该基本上能明白)和一本wpf经典教程书,希望能给在学习WPF的朋友一些帮助。因为我也刚开始学,此文写的很简略,望大家多多包涵!