Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
如何从页面WPF禁用主窗口上的用户控件_Wpf - Fatal编程技术网

如何从页面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的一个属性,该属性告诉用户是否正在编辑。我的意图是尝试此方法,但在这一过程中出现了错误。您的解决方案非常有效。谢谢