أين هو button.dialogresult في WPF؟
-
20-09-2019 - |
سؤال
في System.Windows.نماذج.زر هناك خاصية dialogresult, ، أين هي هذه الخاصية في System.Windows.ضوابط.زر (WPF)؟
المحلول
لا يوجد زر مدمج.
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 (النقر فوق الزر يؤدي إلى إغلاق مربع الحوار وإرجاع النتيجة المحددة)
نصائح أخرى
لا يوجد Button.DialogResult
في WPF. عليك فقط تعيين ملف DialogResult
التابع Window
إلى صواب أو خطأ:
private void buttonOK_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
فقط تأكد من أنك عرضت النموذج باستخدام ShowDialog
عوضا عن Show
. إذا قمت بذلك ، فستحصل على الاستثناء التالي الذي أثير:
كان invalidoperationException غير معلم
لا يمكن تعيين Dialogresult إلا بعد إنشاء النافذة وعرضها كمربع حوار.
MessageBoxResult result = MessageBox.Show("","");
if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else
{
// CODE IN HERE
}
لا تنتمي إلى StackOverflow