首页 文章

C#从App.xaml.cs访问WPF主窗口中的静态属性时导致这种奇怪行为的原因

提问于
浏览
2

我在WPF项目的主窗口中有公共静态属性“inDevMode”,我在启动应用程序时基于命令行参数设置此属性 .

MainWindow mainWindow = new MainWindow();
if (startInDevMode)
{
    MainWindow.inDevMode = true;
}
mainWindow.Show();

花括号内的“MainWindow”不会突出显示为灰色(其他两个类型引用),编译时我收到此消息:

'Window'不包含'inDevMode'的定义,并且没有扩展方法'inDevMode'可以找到接受类型'Window'的第一个参数(你是否缺少using指令或汇编引用?)

如果我将大括号内的内容更改为实例引用(如下所示),我在访问静态属性时知道错误:

MainWindow mainWindow = new MainWindow();
if (startInDevMode)
{
    mainWindow.inDevMode = true;
}
mainWindow.Show();

我收到此错误:

使用实例引用无法访问成员'MainWindow.inDevMode';用类型名称来限定它

但是,如果我将“mainWindow”实例的标识符更改为“MainWindow”,那么我没有错误?

MainWindow MainWindow = new MainWindow();
if (startInDevMode)
{
    MainWindow.inDevMode = true;
}
MainWindow.Show();

并且花括号内的类型引用(“MainWindow”)现在是灰色的

1 回答

  • 3

    MainWindow是 Application 类的属性,它返回 Window ,此类型没有"inDevMode"属性 . 这就是你得到错误的原因 . 您有命名冲突 .

    您可以使用命名空间限定 MainWindow 类型的名称,以便能够设置静态属性:

    MainWindow mainWindow = new MainWindow();
    if (startInDevMode)
    {
        WpfApplication1.MainWindow.inDevMode = true;
    }
    mainWindow.Show();
    

相关问题