c# - C#:从不同的类更改主窗口的 WindowState
问题描述
我有一个最默认的窗口类和我从中调用的第二个类。我需要从第二类更改窗口WindowState
,MainWindow
但是当我尝试这样做时: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;
方式调用的,但给出了相同的错误。周围的工作是什么?
解决方案
发生此错误是因为您将其视为MainWindow
静态对象。但事实上并非如此。考虑到这一点,现在再次阅读错误消息时,您会意识到它会准确地告诉您这个问题。为了解决这个尝试
Application.Current.MainWindow.WindowState = WindowState.Normal;
在您的Execute回调中
推荐阅读
- ios - 通过 vtable 调度比散列表更快,但如果在任何地方使用会消耗大量内存
- swift - 如果数据库中已存在用户,则拒绝创建用户
- php - 使用 PHP/Windows/MySQL 连接到 GDB(或 FDB)数据库文件
- javascript - 如何检查 URL 是否仅包含使用 javascript 的域?
- unit-testing - Roboletric 4.0.1 不断在 buildActivity 上抛出 Resources$NotFoundException
- javascript - three.js 用 3d '绳索' 连接两个移动的物体
- azure - 天蓝色嵌套模板依赖处理错误
- vue.js - Vue js vuelidate 无法读取动态验证模式中的自定义验证
- python - 在 RasPi 上使用 psutil(Python 模块)的问题
- node.js - 确保子文档的属性在猫鼬中具有唯一值