x:Name与x:Key

2017-08-25 19:28:46来源:CSDN作者:qq_28384683人点击

分享

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><TextBoxText="{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中定义的控件元素提供唯一标识。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台