云计算百科
云计算领域专业知识百科平台

WPF学习-x名称空间

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通常在拓展标记里出现,所以需要用{},而且赋值不用=号,用空格

赞(0)
未经允许不得转载:网硕互联帮助中心 » WPF学习-x名称空间
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!