将默认xml命名空间(xmlns)更改为自定义命名空间

时间:2017-09-29 01:49:14

标签: c# wpf xaml

在XAML文件中,我们通常使用默认设置 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

如何定义自定义xmlns而不是默认值。如 xmlns="http://www.mypage.com"

我并不是指添加新的xmlns,而是替换默认的xml。

2 个答案:

答案 0 :(得分:1)

不清楚你的问题是什么......如果你想以某种方式使用默认命名空间而不是建议,只需在(通常)默认命名空间前加一个名称:

SELECT TO_CHAR( r_date, 'dd-mon-rr' ) AS r_date
FROM   efg

在此示例中,我将项目本地名称空间<def:Window x:Class="WpfTests_2.MainWindow" xmlns:def="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="clr-namespace:WpfTests_2" Title="MainWindow"> <def:Window.Resources> <CustomBox x:Key="myLocalCustomBox"/> </def:Window.Resources> <def:Grid x:Name="grid1"> </def:Grid> </def:Window> 设为默认名称,并将(正常)默认名称空间命名为WpfTests_2

对于典型的WPF应用程序,这是一个坏主意,因为您将使用许多控件,并且每次都需要为命名空间名称添加前缀。但它肯定是可能的。

如果您不使用def命名空间中的任何内容(无http://schemas.microsoft.com/winfx/2006/xaml/presentation,无Window,无[无论何种控制]),您可以删除/替换它而无需重新定义它带有前缀。

答案 1 :(得分:-1)

我认为有可能,通过下面的第二部分文档:

For almost all of the examples given in the WPF sections of the SDK, the default XAML namespace is mapped to the WPF namespace http://schemas.microsoft.com/winfx/2006/xaml/presentation.

almost all开始,就是很少有例子没有使用这个网址,所以这是可能的。

Docs Of Microsoft

  

WPF和XAML命名空间声明

     

在许多XAML文件的根标记中的名称空间声明中,您将看到通常有两个XML名称空间声明。第一个声明将整个WPF客户端/框架XAML命名空间映射为默认名称:

     

的xmlns = “http://schemas.microsoft.com/winfx/2006/xaml/presentation”

     

第二个声明映射一个单独的XAML命名空间,将其(通常)映射到x:前缀。

     

的xmlns:X = “http://schemas.microsoft.com/winfx/2006/xaml”

     

映射到自定义类和程序集
  ...

Another Doc

  

根元素还包含属性xmlnsxmlns:x。这些属性向XAML处理器指示哪些XAML名称空间包含标记将作为元素引用的后备类型的类型定义。

     

xmlns属性专门指示默认的XAML命名空间。 在默认的XAML命名空间中,可以指定标记中的对象元素,不带前缀。对于大多数WPF应用程序场景,以及对于SDK的WPF部分中给出的几乎所有示例,默认的XAML名称空间映射到WPF名称空间 http://schemas.microsoft.com/winfx/2006/xaml/presentation

     

xmlns:x属性表示另一个XAML命名空间,它映射XAML语言命名空间http://schemas.microsoft.com/winfx/2006/xaml

     

使用xmlns来定义名称范围的使用和映射范围与XML 1.0规范一致。 XAML名称范围与XML名称范围不同之处仅在于XAML名称范围还暗示了在类型解析和解析XAML时,名称范围的元素如何由类型支持。

     

请注意,xmlns属性仅在每个XAML文件的根元素上是必需的。 xmlns定义将应用于根元素的所有后代元素(此行为再次与xmlns的XML 1.0规范一致。)xmlns属性也允许在根目录下的其他元素上,并将适用于定义元素的任何后代元素。但是,频繁定义或重新定义XAML名称空间会导致难以阅读的XAML标记样式。

     

其XAML处理器的WPF实现包括一个了解WPF核心组件的基础结构。 已知WPF核心程序集包含支持WPF映射到默认XAML名称空间的类型。这是通过作为项目构建文件和WPF构建和项目系统一部分的配置启用的。 因此,将默认的XAML命名空间声明为默认的xmlns是引用来自WPF程序集的XAML元素所必需的。

相关问题