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