Как мне получить System.Windows.ShowDialog() возвращает 'true'?
Вопрос
Как мне получить System.Windows.ShowDialog()
чтобы вернуть 'true'?
Я немного новичок в этом. System.Windows.ShowDialog
возвращаемый тип является bool
?Предполагается, что он вернется true
когда ты ударяешь Submit
, и false
когда ты ударяешь Cancel
.Но я не уверен, как определить, какой Button
это официальная кнопка отправки.
Редактировать:В связи с этим, мне любопытно, как он может возвращать null .
Решение
http://msdn.microsoft.com/en-us/library/system.windows.window .показать каталог.aspx
ShowDialog возвращает значение , равное нулю<(Из <(T>)>) Логическое значение, указывающее, было ли действие принято или отменено.Возвращаемым значением является значение свойства DialogResult перед закрытием окна (см. DialogResult).
По сути, вы решаете, устанавливая значение DialogResult, а не нажимая определенную кнопку - вы решаете, что делает кнопка.
Другие советы
В WPF установите Кнопка.Значение по умолчанию присвоите свойству значение true, чтобы указать, что кнопка является кнопкой "отправить" для окна.Я не уверен на 100%, что это приведет к закрытию окна с диалоговым результатом true.Если это не так, вам просто нужно обработать событие Click таким образом:
this.DialogResult = true;
Редактировать
Аналогично, вы можете использовать Кнопка.Выполняется отмена свойство, чтобы кнопка была кнопкой "отмена" для формы.
Правка 2
Я полагаю, что причина, по которой ShowDialog обнуляется, заключается в том, что, поскольку он равен нулю до тех пор, пока форма не будет отправлена или отменена, вы могли бы проверить это, если бы смотрели диалоговое окно в фоновом потоке.Я этого не пробовал, но это кажется логичной причиной, по которой они ввели бы третье "неизвестное" (нулевое) состояние для свойства.
если вы установите DialogResult в значение true, ShowDialog вернет true, если вы установите DialogResult в значение false, ShowDialog вернет false, если диалоговое окно закрыто без установки DialogResult (пользователь нажимает на красный крестик в правом верхнем углу), ShowDialog вернет null.
Установка значения IsDefault в значение true приведет к тому, что кнопка будет выглядеть немного по-другому, и нажатие enter "щелкнет" по этой кнопке.
Если вы установите для IsCancel значение true, нажатие esc "щелкнет" по этой кнопке.