【问题标题】:Why are XAML namespaces URIs and what are they for?为什么是 XAML 命名空间 URI,它们的用途是什么?
【发布时间】:2013-03-07 12:19:29
【问题描述】:

我对 XML 命名空间持怀疑态度。我不知道为什么我们在所有 XAML 应用程序中都需要这些命名空间。

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

我理解 System.Text、System.LINQ 等中的命名空间的概念。我们在类中使用它是因为我们有位于同一台计算机上的类库。

问题:

  1. 它代表一些URI。所以 WPF 是独立的应用程序。如果应用程序的用户没有连接到互联网,它的意义是什么?首先我们为什么需要这个?

  2. 第一行和第二行有什么区别? xmlns:x 代表什么?

  3. 另外,我在尝试访问该 URI 时看到此错误

    处理您的请求时出错

    这是什么意思?

【问题讨论】:

    标签: wpf xaml xml-namespaces wpf-4.0


    【解决方案1】:

    命名空间定义中提到的 URL 与实际的互联网连接或真实存在的 URL 无关;这只是一个约定,因此可以正确区分命名空间。

    XAML 命名空间就像 C++ 或 C#/VB.NET 中的命名空间一样,用于对类和其他项进行逻辑分组。

    在 WPF/XAML 中,您有一个命名空间 xmlns=http://...,这是 WPF 默认为您提供的控件的命名空间。 xmlns:x 是一个命名空间,用于提供一些特殊值,例如 x:Null 来表示 null-值。
    您也可以定义自己的控件并将其命名为 TextBox,但您应该为这些控件创建自己的命名空间,以免干扰全局命名空间。

    MSDN 上有一篇关于这个主题的好文章。

    【讨论】:

    • 谢谢 Bash。但是我真的不明白为什么 MS 必须在 XAML 中复杂的东西和在 .NET 的 C# 中不同的东西。因为理想情况下,在 C# 或 .NET 中,我们使用“系统”。内置命名空间的格式。同样,这两个 URL 也是您所说的内置类型。并且“.NET 的真正目的是让开发人员不必记住许多类,如 MFC 等等等等,而是使用一个单一的 BASE CLASS LIBRARY”。我想知道为什么他们再次将开发人员与 xaml 中的其他范式混淆。这当然不令人鼓舞。
    • @Divine 这与 .NET 本身几乎没有任何关系,而是与 XML 有关。 XAML 基于 XML,因此遵守它的规则。
    • 是的,我同意你的观点,与 .NET 相比,xml 的作用更多。好吧,我就是这样 :) 谢谢 Bash,你的帖子对我有帮助,我也会阅读 MSDN 文章 :) 干杯
    【解决方案2】:

    这些命名空间就是这样命名的。就这样。您不应该将它们视为 uri。 至于 xmlns 与 xmlns:x - 第一个是默认命名空间,其中包含 wpf 控件,第二个是命名空间,其中包含一些附加声明(x:Type、x:Name 等)。

    【讨论】:

      【解决方案3】:

      我认为接受的answer 中提供的信息并不完全正确。您看到的 url 不是命名空间,而是组合成一个命名空间的集合。以下是 .net 中的一些命名空间,默认命名空间 (url) 映射

      System.Windows、System.Windows.Automation、System.Windows.Controls、System.Windows.Controls.Primitives、System.Windows.Data、System.Windows.Documents

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 2017-12-23
        • 2015-11-16
        相关资源
        最近更新 更多