如何从页面WPF禁用主窗口上的用户控件

时间:2019-07-18 09:57:11

标签: wpf

我的主窗口上有一个用户控件,它是一个菜单。

当用户尝试在页面上编辑对象时,我想在用户处于编辑模式时禁用此用户控件,以使他们不会离开正在编辑的页面。

我无法从页面访问用户控件(放置在主窗口中)

用户控件名称-MenuView

下面的代码在页面的页面加载中

MainWindow mainWindow = new MainWindow();
mainWindow.MenuView.IsEnabled = false;

这似乎不起作用

1 个答案:

答案 0 :(得分:1)

您需要获取对MainWindow的现有实例的引用,而不是创建一个新实例。

如果您不关心MVVM,最简单的方法可能是使用静态Application.Current.WindowsApp.Current.MainWindow属性:

MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault(); 
if (mainWindow != null)
    mainWindow.MenuView.IsEnabled = false;

请注意,这种方法确实会在类之间建立耦合,但是如果您从Page类中访问窗口的字段,则这是不可避免的。

您可能想研究MVVM设计模式,但这是另一回事了。