【问题标题】:What is the Difference Between x:Key, x:Name, and x:UID in a DataTemplate in WPF?WPF 中 DataTemplate 中的 x:Key、x:Name 和 x:UID 有什么区别?
【发布时间】:2014-07-19 02:20:17
【问题描述】:

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

【问题讨论】:

    标签: wpf xaml key difference uid


    【解决方案1】:

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

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

    x:Key

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

    x:姓名

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

    x:Uid

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

    备注

    我只看到 x:Uid 应用必须通过资源字典支持不同的语言。

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

    Xaml Namespace 提供了所有 Xaml 指令的完整列表

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 2010-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        相关资源
        最近更新 更多