Как создать элемент управления и управлять его событиями одним способом? - PullRequest
0 голосов
/ 05 августа 2010

Я все еще застрял.

Предположим, что у меня есть пользовательский элемент управления с кнопкой.И событие под названием damnIt_ButtonClicked.В главном окне я хочу эмулировать время жизни элемента управления, как будто это модальное диалоговое окно, хотя это не так.

Я хочу обернуть все в один метод, оно возвращает значение true, если нажата кнопка на элементе управления.*

  public bool Show() {

      var control = new ControlWithSingleButton();
      bool result;

      control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
      {
            result = true;
      };

      MainWindowGrid.Children.Add(control);
      MainWindowGrid.Visibility = Visibility.Visible;


      return result;
  }

Сейчас.Как видите, проблема в том, что этот метод всегда возвращает false;Но мне нужно возвращать результат только при возникновении события damnIt_ButtonClicked.Это означает, что я должен поставить ветку в ожидании, пока пользователь не нажмет кнопку.Правильно?Или как это должно быть сделано.Помогите мне, пожалуйста ....

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Знаешь что? Я сдаюсь!

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

Большое спасибо.

0 голосов
/ 05 августа 2010

Вам нужно будет перестроить свое решение.Не зная более широких возможностей того, что вы пытаетесь сделать, вот возможное решение.

private bool buttonResult;

public void Show() {

  var control = new ControlWithSingleButton();
  bool result;

  control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
  {
        this.ProcessButtonClick();
  };

  MainWindowGrid.Children.Add(control);
  MainWindowGrid.Visibility = Visibility.Visible;

  }

private void ProcessButtonClick()
{
   this.buttonResult = true;
   //do whatever you would have before if Show had returned true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...