标记扩展实际上就是一些MarkupExtension类的直接或间接派生类。
x名称空间中就包含有一些这样的类,所以我们就称他们为x名称空间内的标记扩展。
x名称中的标记扩展又有哪些呢?
x:Type
用来操作数据类型的实例或者实例的引用,也可以操作自己本身。
示例:
首先,我们在后台创建一个WPF项目,接着添加一个WPF窗口,名称为MyWindow,向后台编写一个Button的派生类
class MyButton : Button
{
public Type UserWindowType { get; set; }
protected override void OnClick()
{
base.OnClick();
Window win = Activator.CreateInstance(this.UserWindowType) as Window;
if (win != null)
{
win.ShowDialog();
}
}
}
这个类具有一个Type类型的属性,即UserWindowType,你需要把一种数据类型当作值赋给它,同时,这个类还重写了基类的Onclick方法,判断这个类是否是窗体,如果是就显示这个窗体;
然后向页面进行布局:
<StackPanel Background="LightBlue">
<TextBox Margin="5"/>