Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类型';MyApp';已包含';MystatusBar';_C#_Wpf_C# 4.0_Wpf Controls - Fatal编程技术网

C# 类型';MyApp';已包含';MystatusBar';

C# 类型';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"/

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.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" ... />