在WPF中的DataTemplate中x:Key,x:Name和x:UID之间的区别是什么?

时间:2014-05-29 14:23:55

标签: wpf xaml key difference uid

我正在尝试在WPF中创建动态标签,我试图编写一个仅适用于某些标签项的内容模板。我希望能够为内容模板创建一个标识符,以便我可以在后面的代码中引用它,这样我就可以选择性地将它应用于单个TabControl中的某些选项卡。但是,我对这三种不同的xaml标识符感到困惑。有什么区别,哪一个最适合我的目的?

2 个答案:

答案 0 :(得分:36)

' x:'指定命名空间,在您的情况下很可能是" http://schemas.microsoft.com/winfx/2006/xaml"您将在Window.Xaml文件的顶部看到声明的别名。 x:Key,x:Name等是该命名空间中的所有指令。

相比之下,'名称' attribute(不带x :)是FrameworkElement类中声明的依赖项属性。

<强> X:键

唯一标识在XAML定义的字典中创建和引用的元素。将x:Key值添加到XAML对象元素是识别资源字典中资源的最常用方法,例如在WPF ResourceDictionary中。

<强> X:名称

在XAML名称范围中唯一标识XAML定义的元素。当框架提供API或实现在运行时访问XAML创建的对象图的行为时,XAML名称范围及其唯一性模型可应用于实例化对象。

<强> X:的Uid

为标记元素提供唯一标识符。在许多情况下,XAML本地化过程和工具使用此唯一标识符。

备注

当应用必须支持使用资源字典的不同语言时,我才看到 x:Uid

对于其他两个(x:Key和x:Name),一个基本的经验法则是对Framework元素使用 x:Name ,对 x:Key 使用 x:Key 样式,模板等。因此,对于您的问题,如果您自己命名模板,则可以使用 x:Key 指令。在模板中声明的控件将使用 x:Name 指令。

所有Xaml指令的完整列表在Xaml Namespace

中给出

答案 1 :(得分:5)

如果要将模板应用于页面中的所有标签页,可以使用 x:输入,但如果要将其应用于少数标签页而不是所有标签页,则可以使用 x:键

通常,当您想在xaml文件中将其用作StaticResource时,您将使用 x:Key 。当您想要在代码隐藏中引用它时,您将为控件或模板提供 x:Name 。我从未使用过X:Uid,但这就是MSDN所说的,

  

使用x:Uid标识XAML中的对象元素。通常这个   object元素是控件类或其他元素的实例   在UI中显示。你的字符串之间的关系   在x中使用:Uid和你在资源文件中使用的字符串是   资源文件字符串是x:Uid后跟一个点(。)然后是   正在生成的元素的特定属性的名称   本地化。