按钮触发将被另一个类捕获的事件或命令



我正试图从一个按钮触发一个事件,该事件将被捕获在一个不同的类中,而不将这个类作为我的类中的实例。我可以这么做吗?

假设我的按钮是在PictoPanelViewModel中创建的,这个类没有任何对MainViewModel的引用,我想让我的按钮触发一个事件,它将调用MainViewModel中的一个方法。

我试过myButton。Command和myButton。点击,但这两个需要MainViewModel的引用,所以我可以调用它。

我现在有点糊涂了。

编辑按钮在PictoPanelViewModel

中动态创建。

我假设MainViewModel至少有一个对PictoPanelViewModel的引用,并且,在最坏的情况下,按钮当时还没有创建。如果是这种情况,我会:

  1. 添加mybuttonclickkedevn事件到PictoPanelViewModel
  2. 创建一个方法triggermybuttonclickkedevn,简单地触发PictoPanelViewModel中的事件
  3. 将triggermybuttonclickkedevn关联到myButton。点击
  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);

相关内容

  • 没有找到相关文章

最新更新