WPF中DataTemplate中x:Key、x:Name、x:UID的区别是什么?



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

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

相反,'Name'属性(没有x:)是在FrameworkElement类中声明的依赖属性。

<<p> x:关键/strong>

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

x:名称

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

x: Uid

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

指出

我只看到过x:Uid当一个应用程序必须支持不同的语言与资源字典。

对于其他两个(x:Key和x:Name),一个基本的经验法则是对框架元素使用x:Name,对样式、模板等使用x:Key。所以对于你的问题,如果你正在命名一个模板本身,你会使用x:Key指令。在模板中声明的控件将使用x:Name指令。

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

如果您想将模板应用到页面中的所有选项卡,您可以使用x:Type,但如果您想将其应用到少数选项卡而不是所有选项卡,您可以使用x:Key

一般你会使用x:Key当你想用它作为你的xaml文件中的StaticResource。当您希望在代码隐藏中引用控件或模板时,您将为其提供x:Name。我从来没有使用过X:Uid,但是MSDN说,

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

相关内容

最新更新