一) 事件处理器
在.net事件处理机制中,可以为对象的某个事件指定一个能与该事件匹配的成员函数,当这个事件发生时,.net运行时与去调用这个函数,即对这个事件的响应和处理。
指定事件处理器的方法:<ClassName EventName="EventHandlerName"/>
范例:
<Window x:Class="_2_XAML的事件_引用和注释.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:_2_XAML的事件_引用和注释"
mc:Ignorable="d"
Title="MainWindow" Height="250" Width="400">
<Grid>
<StackPanel>
<Button Content="事件" Click="Button_Click"/>
</StackPanel>
</Grid>
<x:Code>
<![CDATA[
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("These codes are in the Xaml");
}
]]>
</x:Code>
</Window>
Click="Button_Click" 就是为事件指定处理方法。这里的事件是 Click ,事件处理器(事件的处理方法是Button_Click)。
1)事件处理方法一:编写在XAML中
而Button_Click的方法就是:
<x:Code>
<![CDATA[
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("These codes are in the Xaml");
}
]]>
</x:Code>
<x:Code></x:Code>:使用它可以将在C#的代码搬到XAML中。
<![CDATA[...user code...]]>:XML语言的转义标签,[]内为C#代码。
2)事件处理方法一:编写在C#中
将鼠标光标移动到Click="Button_Click" 中的Button_Click中,按F12,然后在事件处理方法中编写事件处理代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("These codes are in the Xaml");
}
1) 和 2) 的单机事件Button结果如下图:
二) 导入程序集及其名称空间的引用
.Net的模块称为程序集(Assembly)。常见的程序集的扩展名为.exe、.dll。
要在自己的程序里引用类库,需要以下三步:
- 编写类库并编译得到dll文件,或者使用别人的dll文件
- 将类库项目或dll文件引用进自己的项目(在VS项目中的引用上右键,添加引用,然后添加该dll文件即可)
- 在C#或XAML中引用类库中的名称空间
XAML引用名称空间的语法:
xmlns:映射名="clr-namespace:名称空间名;assembly=类库文件名"
xmlns:可以理解为xml的namespace(简写为ns)。
映射名是可选的,只要不重复。
使用语法:
<映射名.类名>...</映射名.类名>
范例:
有一个类库文件叫Lib.dll,里面有个名称空间叫MySpace,那么引用步骤应该如下。
1) Lib.dll已得到,一般放在项目文件架下。
2)添加引用如下图:
右击引用->添加引用->浏览,然后找到该文件
3)添加引用
XAML中:
...
xmlns:lib="clr-namespace:MySpace;assembly=Lib"
<lib:MyClass x:Name="cls1"/>
...
C#中:
using lib=MySpace;
lib.Myclass cls1=new Myclass();
三)XMAL的注释
- XAML注释只能出现在标签的内容区域,即开始标签和结束标签之间。
- XAML注释不能用于注释标签的Attribute。
- XAML注释不能嵌套。
参考文献《深入浅出WPF》刘铁锰