1、创建一个WPF(Windows Presentation Foundation)应用程序
使用“WPF应用程序”模板

2、将控件添加到窗体
将控件从“工具箱”拖放到窗体

3、更新窗体或控件的属性
在设计视图中单击窗体或控件。然后选择以下操作之一:
A、在“属性”窗口(按F4打开)中,选择想要更改的属性,并输入新值
B、在XAML窗格中,在<Window>元素或者定义了控件的其它元素中指定属性和值

4、查看窗体背后的代码
选择以下操作之一:
A、选择“视图”|“代码”
B、在设计视图中右击,然后从弹出的快捷菜单中选择“查看代码”
C、在解决方案资源管理器中,展开窗体的.xaml文件,然后双击下面的.xaml.cs文件

5、定义一组互斥的单选按钮
在窗体上添加一个面板控件,例如StackPanel。将单选按钮添加到面板中。同一个面板中的所有单选按钮都是互斥的。

6、处理控件或窗体的事件
在XAML窗格中,添加代码来指定事件(例如输入Closing=''),然后从快捷菜单中,要么选择一个现有的事件处理方法(要有正确的签名),要么选择<新建事件处理程序>命令。然后,在事件方法中写代码来处理事件。

7、为WPF窗体创建一个菜单
添加一个DockPanel控件,把它放在窗体顶部。然后在DockPanel控件中添加一个Menu控件。

8、在菜单中添加菜单项
为Menu控件添加MenuItem元素。设置Header属性来指定菜单项的显示文件。为了指定菜单项的访问快捷键,可以在字母前面添加一个下划线字符。

9、在菜单中创建一条分隔线
为菜单添加一个Seperator元素。

10、单击菜单项后执行一个操作
选择菜单项,然后为Click事件指定一个事件方法。将你的代码添加到事件方法中。

11、创建快捷菜单
在Windows资源(<Window.Sources>...</Window.Sources>)中添加一个ContextMenu。采取和在普通菜单中添加菜单项一样的方式,在快捷菜单中添加菜单项。

12、将快捷菜单关联到窗体或控件
设置窗体或控件的ContextMenu属性,让这个属性引用快捷菜单。

13、动态创建快捷式菜单
创建一个ContextMenu对象。使用定义了每个菜单项的MenuItem对象来填充这个对象的Items集合(使用Items.Add方法)。设置窗体或控件的ContextMenu属性,使之引用这个ContextMenu。

14、提示用户指定要保存到哪个文件中
使用SaveFileDialog类。使用ShowDialog方法来显示对话框。对话框关闭后,FileName属性就包含了用户选择的文件名。

15、使用数据绑定技术,将窗体控件的属性与对象的属性绑定
在控件属性的XAML代码中,添加<Binding>元素来指定绑定源(一个对象)以及要和对象中的哪个属性绑定。如:
<TextBox ...>
  <TextBox.Text>
    <Binding Source="{StaticResource customerData}"
      Path="ForeName" />
  </TextBox.Text>
</TextBox>

16、允许一个数据绑定对用户输入的数据进行校验
为<Binding>元素添加<Binding.ValidationRules>子元素。如:
<Binding Source="{StaticResource customerData}" Path="ForeName" />
  <Binding.ValidationRules>
    <ExceptionValidationRules />
  </Binding.ValidationRules>
</Binding>

17、采用使用记不反感的方式显示错误信息
定义一个样式,它负责检测对控件的Validation.HasError属性的更改,并将控件的ToolTip属性设为异常所返回的消息。将此样式应用于需要校验的所有控件。如:
<Style x:Key="errorStyle" TargetType="Control">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="True">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}" />
                </Trigger>
            </Style.Triggers>
           
        </Style>

18、在程序控制下校验所有控件,而不是在用户从一个控件切换到另一个控件时进行校验
在定义绑定的XAML代码中,将UpdateSourceTrigger属性设为"Explicit",从而将校验推迟到应用程序明确要求进行校验的时候。为了标准化所有控件的数据,请为每个控件的已绑定的属性创建一个BindingExpression对象,并调用该对象的UpdateSource方法。检查每个BindingExpression对象的HasError属性。如果这个属性为true,表明校验失败。