这几天抽空在学习,原本以为与WinForm的主要区别只是在表现力(动画)方面,但真正了解学习时,才发现其实在编码实现上与WinForm也只能说是少部分相同(控件和窗体有着差不多的事件和属性),也感觉有些实现(数据绑定、控件的使用)不是很好理解。本文主要是分享下,我从网上找的一个""项目源码基础上学习所得,先看下截图:

  (一)主界面

  (二)图片预览界面

    主界面的界面代码,如下:

1 
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 29
30
31 32 33 34
35 36
37 38 39
40
41
42
43 44
45
46
47
48
49
50
51
52
53
54
55
56 57
58
59
60
61
62
63
64
67
68
69
70
71
72
73
74
77
78
79
82
85
88
89
90
93
96
99
100
101
102

     对上面的代码说明如下:

    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的朋友一些帮助。因为我也刚开始学,此文写的很简略,望大家多多包涵!