x:Name与x:Key

XAML的标签声明的是对象,一个XAML标签会对应着一个对象,这个对象一般是一个控件类的实例。

x:Name的作用有两个:

(1)告诉XAML编译器,当一个标签带有x:Name时,除了为这个标签生成对应实例外,还要为这个实例声明一个引用变量,变量名就是x:Name的值。

(2)将XAML标签所对应对象的Name属性(如果有)也设为x:Name的值,并把这个值注册到UI树上,以方便查找。

Name属性定义在FrameworkElement类中,这个类是WPF控件的基类,所以所有WPF控件都具有Name这个属性。当一个元素具有Name属性时,使用Name或x:Name效果是一样的。Name和x:Name是可以互换的,只是不能同时出现在一个元素中。因为x:Name的功能涵盖了Name属性的功能,所以全部使用x:Name以增强代码的统一性和可读性。

x:Key的作用是为资源贴上用于检索的索引。

在WPF中,几乎每个元素都有自己的Resources属性,这个属性是个“Key-Value”式的集合,只要把元素放进这个集合,这个元素就成为资源字典中的一个条目,当然,为了能够检索到这个条件,就必须为它添加x:Key。

<Window .......>

<Window.Resources><sys:String x:Key="myString">Hello WPF Resource!</sys:String></Window.Resources>

<StackPanel><TextBox Text="{StaticResource ResourceKey=myString}"/></StackPanel>

</Window >

区别:

x:Key用在XAML Resources,ResourceDictionary需要key来访问。
x:Name用在ResourceDictionary以外任何地方,可以使用x:Name在code-behind访问对象。
x:Key唯一地标识作为资源创建和引用且存在于 ResourceDictionary 中的元素。
x:Name 唯一标识对象元素,以便于从代码隐藏或通用代码中访问实例化的元素。 
x:key和x:name的区别,前者是为XAML中定义的资源文件提供唯一的标识,后者是为XAML中定义的控件元素提供唯一标识。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值