MyApp.XAML
<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.g.cs
#line 722 "..\..\MyApp.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Primitives.StatusBar MystatusBar;
case 106:
this.MystatusBar = ((System.Windows.Controls.Primitives.StatusBar)(target));
return;
MyApp.xaml.cs
internal StatusBar MystatusBar;
case 110:
this.MystatusBar = (StatusBar)target;
break;
这是一个usercontrol StatusBar。该错误表示&#34;类型&#39; MyApp&#39;已包含&#39; MystatusBar&#39;&#34;
的定义在构建项目时自动创建MyApp.g.cs文件。我坚持这个。
答案 0 :(得分:2)
每当您使用以下命令命名XAML元素时:
<StatusBar Name="MystatusBar" ... />
Visual Studio将为您创建一个具有该名称的成员,以便您可以从代码隐藏中访问它。这是您在 MyApp.g.cs 中看到的实例,它是生成的文件。更改XAML时会自动创建它。
因此,当您尝试在后面的代码( MyApp.xaml.cs )中自己声明另一个具有相同名称的引用时,您会收到错误,因为这三个文件都编译成了进入同一个班级。
您不需要手动声明。您可以使用Visual Studio已经为您创建的那个。
答案 1 :(得分:1)
每当您收到类似以下内容的错误时,通常都是正确的:
“MyApp”类型已包含“MystatusBar”
的定义
这通常意味着您的MyApp
课程中已经有一个名为MystatusBar
的成员。它可能是一个不同类型的成员,甚至是enum
,但你 会在那里宣布一个成员。
找到它的一个好方法是转到错误声明(重复成员声明)并将其注释掉。错误总是发生在第二个声明上,或者是在页面下方声明的声明。因此,复制您的重复成员并将其粘贴到文件的顶部,就在类定义中。
再次编译时,错误现在应突出显示其他成员声明,因此您将知道它之后的位置。
如果这不起作用并且Visual Studio感到困惑,只需保存您的工作,然后关闭并重新打开它。之后应该没问题。