我真的需要更多关于导致这种情况的想法,目前它正在让我陷入困境。
我有一个 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>
这是在一个 Prism 模块中(因此是 MyModule 的名称),但除此之外,我不认为这有什么特别不寻常的地方。
现在,只要我在标题 View 中添加名称,代码就无法编译,例如
<views:MyHeaderView x:Name="header"/>
我回来的错误很简单:
"The type name 'View' does not exist in the type MyModule.MyModule'"
我尝试将包含的用户控件移动到另一个命名空间,创建一个空白用户控件并尝试使用它(相同的结果)并删除 XamDockManager,但似乎没有任何区别。
任何人都可以对此有所了解吗?
最佳答案
我想我找到了答案。
如果我将模块类重命名为 MyModuleThingy,那么它会编译。似乎问题出现了,因为模块类与包含它的命名空间具有相同的名称(MyModule.MyModule)。
如果有人可以让我知道为什么这可能是一个问题,我很想知道。特别是因为我继承了很多代码,这似乎是 Prism 特定实现中的常见模式。
关于wpf - 为什么要添加 x :Name attribute to a user control cause a compilation error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3351860/