0

我正在尝试从 Button 触发一个事件,该事件将被捕获在另一个类中,而无需将此类作为我的类中的实例。我可以这样做吗?

假设我的按钮是在 PictoPanelViewModel 中创建的,并且此类没有对 MainViewModel 的任何引用,我希望 myButton 触发一个事件,该事件将调用 MainViewModel 中的方法。

我尝试了 myButton.Command 和 myButton.Click 但这两个需要 MainViewModel 的引用,所以我可以调用它。

我现在有点困惑。

编辑 按钮是在 PictoPanelViewModel 中动态创建的

4

1 回答 1

1

SI 假设 MainViewModel 至少在瞬间具有对 PictoPanelViewModel 的引用,并且在最坏的情况下,当时尚未创建按钮。如果是这种情况,我会:

  1. 将事件 myButtonClickedEvn 添加到 PictoPanelViewModel
  2. 创建一个 TriggerMyButtonClickedEvn 方法,它只是触发 PictoPanelViewModel 中的事件
  3. 将 TriggerMyButtonClickedEvn 关联到 myButton.Click
  4. 在 MainViewModel 中,当您的类看到 PictoPanelViewModel 时,将您的方法与新创建的事件相关联。

所有这些都转化为这样的代码。

在 PictoPanelViewModel 中:

        this.myButton.Click += new System.EventHandler(this.TriggerMyButtonClickedEvn);

    public event EventHandler myButtonClickedEvn;

    private void TriggerMyButtonClickedEvn(object sender, EventArgs e)
    {
        if (myButtonClickedEvn != null)
            myButtonClickedEvn(sender, e);
    }

在 MainViewModel 中(在您拥有 PictoPanelViewModel 实例的地方):

        aPictoPanelViewModel.myButtonClickedEvn += new System.EventHandler (myButtonClickedInPictoPanelViewModel);
于 2011-07-28T06:16:49.270 回答