Where is Button.DialogResult in WPF?

前端 未结 4 428
情深已故
情深已故 2021-01-01 17:08

In System.Windows.Forms.Button there is a property DialogResult, where is this property in the System.Windows.Controls.Button (WPF)?

相关标签:
4条回答
  • 2021-01-01 17:40

    There is no Button.DialogResult in WPF. You just have to set the DialogResult of the Window to true or false :

    private void buttonOK_Click(object sender, RoutedEventArgs e)
    {
        this.DialogResult = true;
    }
    
    0 讨论(0)
  • 2021-01-01 17:40

    Just make sure that you've shown the form using ShowDialog rather than Show. If you do the latter you'll get the following exception raised:

    InvalidOperationException was unhandled

    DialogResult can be set only after Window is created and shown as dialog.

    0 讨论(0)
  • 2021-01-01 17:42
    MessageBoxResult result = MessageBox.Show("","");
    
    if (result == MessageBoxResult.Yes)
    {
    // CODE IN HERE
    }
    else 
    {
    // CODE IN HERE
    }
    
    0 讨论(0)
  • 2021-01-01 17:52

    There is no built-in Button.DialogResult, but you can create your own (if you like) using a simple attached property:

    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);
          };
        }
      });
    }
    

    This will allow you to write:

    <Button Content="Click Me" my:ButtonHelper.DialogResult="True" />
    

    and get behavior equivalent to WinForms (clicking on the button causes the dialog to close and return the specified result)

    0 讨论(0)
提交回复
热议问题