Кнопка запуска события или команды, которые будут перехвачены другим классом - PullRequest
0 голосов
/ 27 июля 2011

Я пытаюсь вызвать событие с кнопки, которая будет перехвачена в другом классе, не имея этого класса в качестве экземпляра в моем классе.Могу ли я это сделать?

Допустим, мои кнопки создаются в PictoPanelViewModel, и этот класс не имеет ссылки на MainViewModel, я хочу, чтобы myButton вызывал событие, которое вызовет метод внутри MainViewModel.

Я попробовал myButton.Command и myButton.Click, но для этих двух нужна ссылка на MainViewModel, чтобы я мог его вызвать.

Я немного запутался.

РЕДАКТИРОВАТЬ Кнопки создаются динамически в PictoPanelViewModel

1 Ответ

1 голос
/ 28 июля 2011

SI предполагает, что MainViewModel имеет ссылку на PictoPanelViewModel, по крайней мере, на мгновение, и, в худшем случае, кнопки еще не были созданы в то время.В этом случае я бы:

  1. Добавьте событие myButtonClickedEvn в PictoPanelViewModel
  2. Создайте метод TriggerMyButtonClickedEvn, который просто вызывает событие в PictoPanelViewModel
  3. В 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);
...