【问题标题】:How to disable a user control on main window from page WPF如何从页面 WPF 禁用主窗口上的用户控件
【发布时间】:2019-07-18 18:05:31
【问题描述】:

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

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

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

用户控件名称 - MenuView

下面的代码是关于页面的页面加载

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

这似乎不起作用

【问题讨论】:

  • 将 IsEnabled 属性绑定到 viewmodel 的一个属性,该属性告诉用户是否正在编辑。

标签: wpf


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我的意图是尝试这个,但在某个地方出错了。您的解决方案完美运行。谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多