首页 > 解决方案 > C#:从不同的类更改主窗口的 WindowState

问题描述

我有一个最默认的窗口类和我从中调用的第二个类。我需要从第二类更改窗口WindowStateMainWindow但是当我尝试这样做时:MainWindow.WindowState = WindowState.Normal;它给了我这个错误:An object reference is required for the non-static field, method, of property 'Window.WindowState'

MainWindow.xaml.cs

namespace Client_Patcher
{

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

取消最小化ApplicationCommand.cs

namespace Client_Patcher
{
    public class UnminimizeApplicationCommand : ICommand
    {
        public UnminimizeApplicationCommand(WindowState d)
        {
        }

        public bool CanExecute(object parameter)
        {
            throw new NotImplementedException();
        }

        public void Execute(object parameter)
        {
            //Need to change WindowState property of a MainWindow here.
        }

        public event EventHandler CanExecuteChanged;

        event EventHandler ICommand.CanExecuteChanged
        {
            add
            {
                throw new NotImplementedException();
            }

            remove
            {
                throw new NotImplementedException();
            }
        }
    }
}

另外,我试图这样做:

namespace Client_Patcher
{
    public partial class MainWindow : Window
    {
        public MainWindow AppWindow { get; }

        public MainWindow()
        {
            InitializeComponent();
            AppWindow = this;
        }
    }
}

这是通过MainWindow.AppWindow.WindowState = WindowState.Normal;方式调用的,但给出了相同的错误。周围的工作是什么?

标签: c#wpf

解决方案


发生此错误是因为您将其视为MainWindow静态对象。但事实上并非如此。考虑到这一点,现在再次阅读错误消息时,您会意识到它会准确地告诉您这个问题。为了解决这个尝试

Application.Current.MainWindow.WindowState = WindowState.Normal;

在您的Execute回调中


推荐阅读