Access命名空间未在XAML中完全定义

时间:2016-07-19 11:09:22

标签: c# .net wpf xaml namespaces

让我们假设我的XAML在mycontrols中使用我导入的命名空间定义如下。

<Grid x:Class="LayoutGrid"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"         
    xmlns:mycontrols="clr-namespace:Predefined.Controls;assembly=UIControls"  
    >

如果我要使用命名空间Predefined.Controls中定义的内容,那么我只想用别名mycontrols

引用它

示例:

<mycontrols:MyCustomButton Name="SubmitButton" />

现在如果命名空间Predefined.Controls.CustomTextBoxes也存在,是否有办法在此命名空间内使用控件而无需将其添加到顶部的XAML定义中?

这样的东西?

<mycontrols.CustomTextBoxes:MyCustomTextBox Name="TextBox1" />

1 个答案:

答案 0 :(得分:1)

没有。在XML中,命名空间前缀定义了命名空间,您无法在其上添加任何内容。您需要在父元素中添加完整的CLR名称空间作为XML名称空间声明:

xmlns:ctb="clr-namespace:Predefined.Controls.CustomTextBoxes;assembly=UIControls"

在XAML中实例化该元素/控件时使用该前缀:

<ctb:MyCustomTextBox />