C# 类型';MyApp';已包含';MystatusBar';
MyApp.XAMLC# 类型';MyApp';已包含';MystatusBar';,c#,wpf,c#-4.0,wpf-controls,C#,Wpf,C# 4.0,Wpf Controls,MyApp.XAML <StatusBar Name="MystatusBar" DockPanel.Dock="Bottom" BorderBrush="Black" Background="{StaticResource DarkBrush}"> <StatusBarItem> <TextBlock x:Name="m_StatusBarLineInfo"/
<StatusBar Name="MystatusBar" DockPanel.Dock="Bottom" BorderBrush="Black"
Background="{StaticResource DarkBrush}">
<StatusBarItem>
<TextBlock x:Name="m_StatusBarLineInfo"/>
</StatusBarItem>
<StatusBarItem>
<Separator/>
</StatusBarItem>
<StatusBarItem>
<TextBlock x:Name="m_StatusBarMessage"/>
</StatusBarItem>
</StatusBar>
MyApp.xaml.cs
internal StatusBar MystatusBar;
case 110:
this.MystatusBar = (StatusBar)target;
break;
这是一个用户控件状态栏。错误表示“类型'MyApp'已包含'MystatusBar'的定义”
生成项目时自动创建的MyApp.g.cs文件。我被困在这个问题上了 无论何时,只要出现如下错误,通常都是正确的: 类型“MyApp”已包含“MystatusBar”的定义 这通常意味着在您的
MystatusBar
类中已经声明了一个名为MyApp
的成员。它可能是不同类型的成员,甚至是enum
,但您将在其中的某个位置声明一个成员
找到它的一个好方法是转到错误声明(重复的成员声明)并注释掉它。错误总是发生在第二个声明上,或者在页面的下一个声明上。因此,复制复制的成员并将其粘贴到文件顶部,就在类定义内部
当您再次编译时,错误现在应该突出显示另一个成员声明,这样您就知道它在后面的位置了
如果这不起作用并且VisualStudio感到困惑,只需保存您的工作,然后关闭并重新打开它。之后就可以了。无论何时命名一个XAML元素,就像您使用:
<StatusBar Name="MystatusBar" ... />
VisualStudio将为您创建一个具有该名称的成员,以便您可以从代码隐藏中访问它。这是您在MyApp.g.cs中看到的实例,它是一个生成的文件。当您更改XAML时,它会自动创建
因此,当您试图在代码隐藏(MyApp.xaml.cs)中声明另一个同名引用时,您会正确地得到一个错误,因为这三个文件都编译到同一个类中
您不需要手动声明。您可以只使用Visual Studio已经为您创建的声明。谢谢从代码隐藏中删除了手动声明。现在很好。非常感谢。
<StatusBar Name="MystatusBar" ... />