【问题标题】:In Silverlight why are some properties prefixed with x e.g x:name and some are not?在 Silverlight 中,为什么有些属性以 x 为前缀,例如 x:name 而有些则不是?
【发布时间】:2008-12-10 09:09:11
【问题描述】:

在 Silverlight(我猜是 WPF)中,为什么属性 x:name x:fieldmodifier x:uid 是唯一带有前缀 x 的属性。

我知道 x 前缀用于引用 XML 命名空间,但还有许多其他属性不使用前缀,例如宽度。识别控件是如此常见的任务,需要前缀似乎很奇怪?

【问题讨论】:

    标签: wpf xml silverlight


    【解决方案1】:

    我认为这里的重点是xaml和wpf/SL的区别。

    Xaml 实际上是一种对象初始化语言,完全独立于 wpf / SL。例如,您还可以使用 xaml 在 WF 中定义工作流。我认为这就是将“纯”Xaml 命名空间与表示命名空间区分开来的原因。

    【讨论】:

    • 是的,我同意,我认为这可能就是这样做的原因
    【解决方案2】:

    更新:我很抱歉,因为我不太了解这个问题(请参阅评论)。

    在 silverlight 和 wpf 中,.net 命名空间与 xml 命名空间相关联。 更常见的 .net 命名空间与 xml 命名空间相关联 “http://schemas.microsoft.com/winfx/2006/xaml/presentation”。 然后在 xaml 根元素中有这个命名空间定义:

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    

    这意味着与“http://schemas.microsoft.com/winfx/2006/xaml/presentation”关联的 .net 命名空间不需要前缀。

    Here 很好地解释了 xaml 和命名空间。

    【讨论】:

    • 谢谢,但我明白。为什么在根命名空间之一中没有 x:name,所以它不需要前缀?
    • alexmac:这里有 2 个命名空间,“xaml”和“presentation”命名空间。每个元素都在这些命名空间之一中,但只有一个命名空间可以是默认命名空间。如果您更改根元素中的 xmlns 声明,您可能可以选择您喜欢的任何默认命名空间
    • 请注意,如果将“xaml”命名空间切换为默认命名空间,则“presentation”命名空间中的所有其他元素和属性都需要一个 x: 前缀
    • 看起来很奇怪,像 name 属性这样的常用东西不能成为所有其他属性所在的命名空间的一部分?我想这可能是为了让它与演示文稿和 xaml 命名空间分开,以便它可以用于其他事情
    【解决方案3】:

    其中之一:

    • 个人喜好。
    • 该项目的实现(类)与 XAML 文件在相同程序集中。
    • 有些傻瓜决定创建自己的名称属性。

    【讨论】:

    • 我会很感激拒绝投票的原因。特别是,原因 2 是 100% 有效的。有没有人投票过这个?我对此表示怀疑。
    猜你喜欢
    • 2016-09-16
    • 2014-08-26
    • 2023-03-29
    • 2021-11-30
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多