Как обрабатывать диалоги с несколькими кнопками в WPF? - PullRequest
1 голос
/ 12 октября 2010

У меня есть окно с семью кнопками; Я использую это как меню в простой игре, над которой я работаю, но я отображаю это как диалог. Как узнать, какую кнопку нажал пользователь, поскольку DialogResult в WPF предлагает только true, false и null?

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Если вы создаете собственное Окно таким способом, вам не нужно беспокоиться о DialogResult.

Вы можете отслеживать это в свойстве окна и просто читать свойствопосле закрытия диалога.

 MyDialog window = new MyDialog();
 if (window.ShowDialog() == false)
 {
    // user closed the window...
 }

 var choice = window.CustomPropertyContainingChoice;
0 голосов
/ 12 октября 2010

Определите свой собственный enum и предложите статический метод для отображения окна, которое возвращает ваш enum.

Код ниже делает то же самое, что является частью окна, которое позволяет пользователям просматривать свои изменения и принимать или отменять. Поскольку мне нужны только true и false, я использовал bool, однако было бы тривиально перейти на enum.

public static bool DisplayChanges(List<INormalizedMessage> LstMessages)
        {
            var retlist = LstMessages.Where(( INormalizedMessage NM ) => { return NM.Status != NormalizedMessageStatus.NoChange; });
            ReviewChanges RC = new ReviewChanges();
            RC.Messages = retlist.ToList();
            RC.ShowDialog();
            return RC.Result;

        }

        private void cmdCancle_Click( object sender, RoutedEventArgs e )
        {
            Result = false;
            Hide();
        }

        private void cmdOK_Click( object sender, RoutedEventArgs e )
        {
            Result = true;
            Hide();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...