在 XAML 文件中,我们通常使用默认设置xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
如何定义自定义 xmlns 而不是默认的 xmlns。如xmlns="http://www.mypage.com"
我的意思不是添加到新的xmlns,而是替换默认的xmlns。
目前还不清楚你的问题是什么...如果要使用与建议不同的默认命名空间,只需在(通常)默认命名空间前面加上名称:
<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
为默认值,并将(普通)默认命名空间命名为def
。
对于典型的 WPF 应用程序,这是一个坏主意,因为您将使用许多控件,并且每次都需要为命名空间名称添加前缀。但这当然是可能的。
如果您不使用http://schemas.microsoft.com/winfx/2006/xaml/presentation
命名空间中的任何内容(没有Window
、没有UserControl
、没有 [任何控件]),您可以删除/替换它而无需使用前缀重新定义它。
我认为这是可能的,通过下面的第二部分文档:
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
,那就是存在很少的例子不使用这个网址,所以这是可能的。
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">
映射到自定义类和程序集
...
另一个文档:
根元素还包含属性
xmlns
和xmlns: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
定义将应用于根元素的所有后代元素(此行为再次与 XML 1.0 规范一致xmlns
.)xmlns
属性也允许在根下的其他元素上使用,并且将应用于定义元素的任何后代元素。但是,频繁定义或重新定义 XAML 命名空间可能会导致难以阅读的 XAML 标记样式。其 XAML 处理器的 WPF 实现包括一个可识别 WPF 核心程序集的基础结构。已知 WPF 核心程序集包含支持 WPF 映射到默认 XAML 命名空间的类型。这是通过作为项目生成文件以及 WPF 生成和项目系统一部分的配置启用的。因此,只需将默认 XAML 命名空间声明为默认
xmlns
即可引用来自 WPF 程序集的 XAML 元素。