WPF学习-x名称空间
1.x:Class的作用
定义:这个Attribute的作用就是告诉XMAL编译器,编译出来的代码和哪个C#的后台代码合并。
比如说我们新建一个wpf,x:Class=“WpfApp3.MainWindow”
<Windowx:Class="WpfApp3.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:WpfApp3"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"><StackPanel><TextBoxx:Name="MyTextBox"Margin="5"></TextBox><ButtonContent="hello"Height="30"Click="Button_Click"></Button></StackPanel></Window>namespaceWpfApp3{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}privatevoidButton_Click(objectsender,RoutedEventArgse){MyTextBox.Text="hello";}}}这里的Window x:Class="WpfApp3.MainWindow"就是表示等下编译完,你和后面这个MainWindow的.CS代码合并,但是如果将这个x:class改成WindowsABC,也可以运行,但是这些和后台联动的代码都不起作用了。
<Windowx:Class="WpfApp3.WindowABC"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:WpfApp3"mc:Ignorable="d"Title="MainWindow"Height="450"Width="800"><StackPanel><TextBoxx:Name="MyTextBox"Margin="5"></TextBox><ButtonContent="hello"Height="30"></Button></StackPanel></Window>2.x:Name的作用
定义:就是将XMAL的对象声明一个引用变量,这个引用变量的名字就时x:Name后面的名称。
<StackPanel><TextBoxx:Name="MyTextBox"Margin="5"></TextBox><ButtonContent="hello"Height="30"></Button></StackPanel>类似于这种
3.x:Key的作用
定义:为资源定义资源的索引
<Window.Resources><sys:Stringx:Key="myString">hello world</sys:String></Window.Resources><StackPanelx:Name="MyStackPanel"><TextBoxx:Name="myTxt1"Margin="5"Text="{StaticResource ResourceKey=myString}"></TextBox><TextBoxx:Name="myTxt2"Margin="5"></TextBox><ButtonMargin="5"Click="Button_Click"Height="20"Content="Click me"></Button></StackPanel>这个x:Key=“myString” 就是字符串
4.x:Type的作用
定义:为一个类型取个名称
第一步:创建一个新的window
<Windowx:Class="WpfApp4.MyWindow"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:WpfApp4"mc:Ignorable="d"Title="MyWindow"Height="100"Width="50"><StackPanel><TextBoxMargin="5"></TextBox><TextBoxMargin="5"></TextBox><TextBoxMargin="5"></TextBox></StackPanel></Window>第二步:新建一个Mybutton的类,派生字Button,新建一个type的类型,并且重写Onclick的方法,再Onclick的外部事件触发完成后,再次将这个type类型实例化成一个window类型,并且输出展示
publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}}publicclassMyButton:Button{publicTypeMyType{get;set;}protectedoverridevoidOnClick(){base.OnClick();Windowwin=Activator.CreateInstance(this.MyType)asWindow;win.Show();}}第三步:在mainWindow的xmal里调用这个button,并且将第一步的window类型赋值给button的type属性
<StackPanel><local:MyButtonContent="show"MyType="{x:Type local:MyWindow}"Margin="5"></local:MyButton></StackPanel>第四步:这样就可以通过show按钮来弹出新的window
需要注意的是:x:type通常在拓展标记里出现,所以需要用{},而且赋值不用=号,用空格
5.x:Null的作用
定义:在xmal里的null作用
比如我们在定义了一个style后,如果后面的按钮不需要这个style,那么就可以直接赋值null
<Window.Resources><Stylex:Key="{x:Type Button}"TargetType="{x:Type Button}"><SetterProperty="Height"Value="30"></Setter><SetterProperty="Width"Value="30"></Setter></Style></Window.Resources><StackPanel><ButtonContent="ok"Style="{x:Null}"></Button><ButtonContent="ok"></Button><ButtonContent="ok"></Button></StackPanel>6.x:Array的作用
定义:声明一个数组,用来给一些集合属性硬编码少量数据
<Grid><ListBoxMargin="5"><ListBox.ItemsSource><x:ArrayType="sys:String"><sys:String>tim</sys:String><sys:String>tom</sys:String></x:Array></ListBox.ItemsSource></ListBox></Grid></Window>7 x:Static的作用
定义:当在Xaml里使用静态成员时需要
<Grid><TextBlockText="{x:Static local:MainWindow.str1}"></TextBlock></Grid>publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}publicstaticstringstr1="白日依山尽";}}8.总结
以上就是常用的几种x:名称空间的用法