【问题标题】:Trigger Event on WPF Window from another WPF window从另一个 WPF 窗口触发 WPF 窗口上的事件
【发布时间】:2013-03-16 11:40:39
【问题描述】:

我有 2 个 WPF 窗口:

  • 主窗口
  • 窗口1

在Window1中执行一些查询后,数据被取出并存储在Window1中的List中

我要实现的目标如下:

  1. 在 Window1 中的 botton clck 上,我希望 MainWindow 的复选框控件不被选中
  2. 在 Window1 中单击按钮时,我希望将 List 的数据加载到 MainWindow 的 datagrd1 中

考虑到 #2,我尝试在 MainWindow 中引入一个公共静态方法,并在 Window1 的按钮单击中调用它,但问题是我可以在该方法中引用 datagrid1。错误是:“无法在非静态字段 datagrid1 上引用”。

有没有办法实现上述内容? 谢谢...

【问题讨论】:

    标签: c# wpf wpf-controls


    【解决方案1】:

    可以获取MainWindow的当前实例:

    MainWindow main = (MainWindow)Application.Current.MainWindow; 
    

    我无法提出更好的方法,因为您的问题没有提供太多关于窗口如何交互的信息,但这应该可以满足您的需求。

    【讨论】:

      【解决方案2】:

      您可以使用数据绑定和 mvvm 来实现这一点。有关使用这些技术在窗口之间进行通信的简单应用程序,请参阅此处。

      MVVM Main window control bind from child user control

      编辑 使用我描述的技术将要求您以不同的方式解决您的问题,并且不会用您现有的代码解决问题。但我相信这比尝试使用静态方法和操作 uielements 更好

      【讨论】:

      • 为什么投反对票?你是说数据绑定和mvvm解决不了问题?
      • 出现错误是因为 OP 使用的是静态方法。我们不会在 mvvm 中使用它,我们宁愿使用 ICommands。
      • 我投了赞成票,因为经过对链接的小检查后,我认为答案解决了我的问题。
      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多