WPF学习-x名称空间
1.x:Class的作用
定义:这个Attribute的作用就是告诉XMAL编译器,编译出来的代码和哪个C#的后台代码合并。
比如说我们新建一个wpf,x:Class=“WpfApp3.MainWindow”
<Window x: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>
<TextBox x:Name="MyTextBox" Margin="5"></TextBox>
<Button Content="hello" Height="30" Click="Button_Click" > </Button>
</StackPanel>
</Window>
namespace WpfApp3
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MyTextBox.Text = "hello";
}
}
}
这里的 Window x:Class="WpfApp3.MainWindow"就是表示等下编译完,你和后面这个MainWindow的.CS代码合并,但是如果将这个x:class改成WindowsABC,也可以运行,但是这些和后台联动的代码都不起作用了。
<Window x: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>
<TextBox x:Name="MyTextBox" Margin="5"></TextBox>
<Button Content="hello" Height="30" > </Button>
</StackPanel>
</Window>
2.x:Name的作用
定义:就是将XMAL的对象声明一个引用变量,这个引用变量的名字就时x:Name后面的名称。
<StackPanel>
<TextBox x:Name="MyTextBox" Margin="5"></TextBox>
<Button Content="hello" Height="30" > </Button>
</StackPanel>
类似于这种
3.x:Key的作用
定义:为资源定义资源的索引
<Window.Resources>
<sys:String x:Key="myString"> hello world </sys:String>
</Window.Resources>
<StackPanel x:Name="MyStackPanel">
<TextBox x:Name="myTxt1" Margin="5" Text="{StaticResource ResourceKey=myString}"></TextBox>
<TextBox x:Name="myTxt2" Margin="5" ></TextBox>
<Button Margin="5" Click="Button_Click" Height="20" Content="Click me"></Button>
</StackPanel>
这个x:Key=“myString” 就是字符串
4.x:Type的作用
定义:为一个类型取个名称
第一步:创建一个新的window
<Window x: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>
<TextBox Margin="5"></TextBox>
<TextBox Margin="5"></TextBox>
<TextBox Margin="5"></TextBox>
</StackPanel>
</Window>
第二步:新建一个Mybutton的类,派生字Button,新建一个type的类型,并且重写Onclick的方法,再Onclick的外部事件触发完成后,再次将这个type类型实例化成一个window类型,并且输出展示
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class MyButton : Button
{
public Type MyType { get; set; }
protected override void OnClick()
{
base.OnClick();
Window win=Activator.CreateInstance(this.MyType) as Window;
win.Show();
}
}
第三步:在mainWindow的xmal里调用这个button,并且将第一步的window类型赋值给button的type属性
<StackPanel>
<local:MyButton Content="show" MyType="{x:Type local:MyWindow}" Margin="5"></local:MyButton>
</StackPanel>
第四步:这样就可以通过show按钮来弹出新的window
需要注意的是:x:type通常在拓展标记里出现,所以需要用{},而且赋值不用=号,用空格
网硕互联帮助中心



评论前必须登录!
注册