В System.Windows.Forms.Button есть свойство DialogResult, где находится эта недвижимость в System.Windows.Controls.Button (WPF)?Где кнопка.DialogResult в WPF?
ответ
Там будет никакой встроенной Button.DialogResult, но вы можете создать свой собственный (если хотите), используя простой вложенное свойство:
public class ButtonHelper
{
// Boilerplate code to register attached property "bool? DialogResult"
public static bool? GetDialogResult(DependencyObject obj) { return (bool?)obj.GetValue(DialogResultProperty); }
public static void SetDialogResult(DependencyObject obj, bool? value) { obj.SetValue(DialogResultProperty, value); }
public static readonly DependencyProperty DialogResultProperty = DependencyProperty.RegisterAttached("DialogResult", typeof(bool?), typeof(ButtonHelper), new UIPropertyMetadata
{
PropertyChangedCallback = (obj, e) =>
{
// Implementation of DialogResult functionality
Button button = obj as Button;
if(button==null)
throw new InvalidOperationException(
"Can only use ButtonHelper.DialogResult on a Button control");
button.Click += (sender, e2) =>
{
Window.GetWindow(button).DialogResult = GetDialogResult(button);
};
}
});
}
Это позволит вам написать:
<Button Content="Click Me" my:ButtonHelper.DialogResult="True" />
и получить поведение эквивалентно WinForms (нажатие на кнопку вызывает диалоговое окно, чтобы закрыть и вернуть указанный результат)
В WPF нет Button.DialogResult
. Вы просто должны установить DialogResult
в Window
истинный или ложный:
private void buttonOK_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
@Shimmy: Это должно быть принято на самом деле. – Mangesh
Просто убедитесь, что вы показали форму с помощью ShowDialog
, а не Show
. Если вы сделаете последнее, вы получите следующее исключение поднятый:
InvalidOperationException был необработанное
DialogResult может быть установлен только после того, как окно создается и отображается в диалоговом окне. не
MessageBoxResult result = MessageBox.Show("","");
if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else
{
// CODE IN HERE
}
Я узнал новый материал в herer, этот attatching, eventho im не собирается использовать его в этом случае, конечно будет полезно! Большое спасибо – Shimmy
Я никогда не знал о функции GetWindow, это просто потрясающе! – Shimmy
Отличное решение, сделанное по своей простоте. –