wpf - 为什么要添加 x :Name attribute to a user control cause a compilation error?

标签 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>

这是在一个 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/

相关文章:

xaml - XAML 命名空间的最佳命名约定是什么?

c# - 容器 UserControl - 处理和修改添加的控件

java - 在java中的组合框中添加项目运行时

c# - 在纯 XAML 中创建 WPF 水印

wpf - TabControl 在 Window.Show 上丢失选定的选项卡

c# - 位图和 hBitmap 内存泄漏

c# - 具有网格布局的自定义 ItemsControl

c# - 来自 json 的 XAML GridView 设计时数据

c# - 如何得到 x :name of element in code behind/XAML

asp.net - UpdatePanel 内的用户控件 - 更新时 css 样式消失(IE8)