2009-11-18 12 views

उत्तर

30

कोई अंतर्निहित है 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 करने के लिए व्यवहार बराबर

+0

मैंने यहां नई चीजें सीखी हैं, यह अटैचिंग, इवेंटहो इस मामले में इसका उपयोग नहीं करेगा, निश्चित रूप से उपयोगी होगा! बहुत बहुत धन्यवाद – Shimmy

+0

मुझे GetWindow func के बारे में कभी नहीं पता था, यह बस अद्भुत है! – Shimmy

+0

एक शानदार समाधान, इसकी सादगी में अधिक बनाया गया। –

17

डब्ल्यूपीएफ में Button.DialogResult नहीं है। बस सुनिश्चित करें कि आप ShowDialog बजाय Show का उपयोग कर प्रपत्र दिखाया है बनाने

private void buttonOK_Click(object sender, RoutedEventArgs e) 
{ 
    this.DialogResult = true; 
} 
+2

@Shimmy: इसे वास्तव में उत्तर स्वीकार किया जाना चाहिए .. – Mangesh

1

: तुम बस सही या गलत का Window की DialogResult सेट करना होगा। यदि आप बाद करते हैं तो आपको निम्न अपवाद उठाया मिलेगा:

InvalidOperationException के बाद ही खिड़की बनाया है और संवाद के रूप में दिखाया गया है बिना क्रिया

DialogResult सेट किया जा सकता था।

-4
(बटन पर क्लिक बंद कर दें और निर्दिष्ट परिणाम वापस जाने के लिए संवाद का कारण बनता है) 0
+2

'MessageBoxResult परिणाम = नया संदेश BoxResult();' मैं – Will

+0

lol'd यह कोड भी काम नहीं करेगा ... 'MessageBox.Show ("", "");' हाँ नहीं दिखाएगा | कोई बटन नहीं। – qJake