为什么将x:Name属性添加到用户控件会导致编译错误?

adh*_*eek 8 wpf xaml user-controls prism

我真的需要更多关于造成这种情况的想法,目前它正在推动我的发展.

我有一个Xaml用户控件,其中包含另一个用户控件,如下所示:


<UserControl x:Class="MyModule.View.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:igDock="http://infragistics.com/DockManager"
    xmlns:views="clr-namespace:MyModule.View"
    >
  <StackPanel x:Name="panel">
    <views:MyHeaderView/>
    <igDock:XamDockManager x:Name="dockingManager"/>
  </StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

这是在Prism模块中(因此是MyModule名称),但我不认为这是特别不寻常的.

现在,只要我在标题视图中添加名称,代码就无法编译,例如

<views:MyHeaderView x:Name="header"/>
Run Code Online (Sandbox Code Playgroud)

我得到的错误很简单:

"The type name 'View' does not exist in the type MyModule.MyModule'"

我已经尝试将包含的用户控件移动到另一个命名空间,创建一个空白的用户控件并尝试使用它(相同的结果)并删除XamDockManager,但似乎没有任何区别.

任何人都可以对此有所了解吗?

adh*_*eek 6

我想我找到了答案.

如果我将模块类重命名为MyModuleThingy,则编译.似乎问题出现是因为模块类与包含它的命名空间(MyModule.MyModule)具有相同的名称.

如果有人能让我知道为什么这可能是一个问题,我会非常有兴趣知道.特别是因为我继承了许多代码,这些代码似乎是Prism特定实现中的常见模式.