如何从页面WPF禁用主窗口上的用户控件
我的主窗口上有一个用户控件,它是一个菜单 当用户尝试编辑页面上的对象时,我希望在用户处于编辑模式时禁用此用户控件,以便他们不会离开正在编辑的页面 从页面访问用户控件(位于主窗口)时遇到问题 用户控件名称-菜单视图 下面的代码位于页面的页面加载上如何从页面WPF禁用主窗口上的用户控件,wpf,Wpf,我的主窗口上有一个用户控件,它是一个菜单 当用户尝试编辑页面上的对象时,我希望在用户处于编辑模式时禁用此用户控件,以便他们不会离开正在编辑的页面 从页面访问用户控件(位于主窗口)时遇到问题 用户控件名称-菜单视图 下面的代码位于页面的页面加载上 MainWindow mainWindow = new MainWindow(); mainWindow.MenuView.IsEnabled = false; 这似乎不起作用,但您需要获取对main窗口现有实例的引用,而不是创建一个新实例 如果您不关
MainWindow mainWindow = new MainWindow();
mainWindow.MenuView.IsEnabled = false;
这似乎不起作用,但您需要获取对
main窗口现有实例的引用,而不是创建一个新实例
如果您不关心MVVM,最简单的方法可能是使用静态Application.Current.Windows
或App.Current.MainWindow
属性:
MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if (mainWindow != null)
mainWindow.MenuView.IsEnabled = false;
MainWindow MainWindow=Application.Current.Windows.OfType().FirstOrDefault();
如果(主窗口!=null)
mainWindow.MenuView.IsEnabled=false;
请注意,这种方法确实会在类之间创建耦合,但如果您从页面
类中访问窗口字段,则这是不可避免的
您可能想研究MVVM设计模式,但那是另一回事。将IsEnabled属性绑定到viewmodel的一个属性,该属性告诉用户是否正在编辑。我的意图是尝试此方法,但在这一过程中出现了错误。您的解决方案非常有效。谢谢