让我们假设我的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" />
答案 0 :(得分:1)
没有。在XML中,命名空间前缀定义了命名空间,您无法在其上添加任何内容。您需要在父元素中添加完整的CLR名称空间作为XML名称空间声明:
xmlns:ctb="clr-namespace:Predefined.Controls.CustomTextBoxes;assembly=UIControls"
在XAML中实例化该元素/控件时使用该前缀:
<ctb:MyCustomTextBox />