Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button.DialogResult在WPF中的何处?_Wpf_Button_Dialogresult - Fatal编程技术网

Button.DialogResult在WPF中的何处?

Button.DialogResult在WPF中的何处?,wpf,button,dialogresult,Wpf,Button,Dialogresult,在中有一个属性,该属性在(WPF)中的何处?WPF中没有按钮。DialogResult。您只需将窗口的对话框result设置为true或false: private void buttonOK_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; } 只需确保已使用ShowDialog而不是Show显示表单即可。如果执行后一种操作,将引发以下异常: 未处理InvalidOperationException

在中有一个属性,该属性在(WPF)中的何处?

WPF中没有
按钮。DialogResult
。您只需将
窗口的
对话框result
设置为true或false:

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

只需确保已使用
ShowDialog
而不是
Show
显示表单即可。如果执行后一种操作,将引发以下异常:

未处理InvalidOperationException

只有在创建窗口并显示为对话框后,才能设置DialogResult


没有内置的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等效的行为(单击按钮会导致对话框关闭并返回指定结果)

我在这里学到了一些新东西,这个附件,即使我不打算在这种情况下使用它,肯定会有用!谢谢,洛蒂我从来不知道GetWindow func,这太神奇了!这是一个很棒的解决方案,在它的简单性上做得更好。这段代码甚至不起作用<代码>消息框。显示(“,”)将不显示是|否按钮。
MessageBoxResult result = MessageBox.Show("","");

if (result == MessageBoxResult.Yes)
{
// CODE IN HERE
}
else 
{
// CODE IN HERE
}