C# 使用不带命名空间前缀的用户控件名

C# 使用不带命名空间前缀的用户控件名,c#,wpf,xaml,C#,Wpf,Xaml,假设我有这样一个用户控件: 还有一扇这样的窗户: <Window x:Class="XAMLUserControl.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:co

假设我有这样一个用户控件:


还有一扇这样的窗户:

<Window
    x:Class="XAMLUserControl.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:control="clr-namespace:WPFUserControl"
    Title="MainWindow" Height="600" Width="800">

   <Grid>
      <control:MyUserControl/>
   </Grid>

</Window>
我会用


您可以使用将包含
MyUserControl
的命名空间作为所有本机wpf组件“属于”同一个xml命名空间(如下所示:,基本上是在UserControl的xaml中分配给
xmlns
本身的值)。这应该允许您使用UserControl,而不必使用名称空间前缀

您的示例将在AssemblyInfo.cs中使用,执行
[assembly:XmlnsDefinition('http://schemas.microsoft.com/winfx/2006/xaml/presentation“,“WPFUserControl”)]

第一个参数是将要使用的xml名称空间,第二个参数是c#名称空间,它包含在xaml中不带前缀的情况下要使用的内容


您可以找到有关XAML和C#名称空间如何协同工作的更多信息

是否有不允许这样做的原因@NAWEDNABIZADATA这是对名称空间的引用,您可以在另一个名称空间中创建另一个名称完全相同的控件,xaml如何知道您引用的是哪个控件?是的,您可以这样做。但是,如果有一天Microsoft在“”命名空间中提供了同名的控件,该怎么办?看起来是个坏主意。@KlausGütter我从来没说过这是个好主意,我只是展示了如何按照询问者的要求去做