如何在WPF中处理具有多个按钮的对话框?

如何在WPF中处理具有多个按钮的对话框?,wpf,button,dialog,Wpf,Button,Dialog,我有一个有七个按钮的窗口;我在一个简单的游戏中使用它作为菜单,但我将它显示为一个对话框。由于DialogResult in WPF仅提供true、false和null,我如何知道用户按下了哪个按钮?定义您自己的枚举,并提供一个静态方法来显示返回枚举的窗口 下面的代码做了同样的事情,它是一个窗口的一部分,允许用户查看他们的更改并接受或取消。因为我只需要true和false,所以我使用了bool,但是更改为enum是很简单的 public static bool DisplayChanges(Lis

我有一个有七个按钮的窗口;我在一个简单的游戏中使用它作为菜单,但我将它显示为一个对话框。由于DialogResult in WPF仅提供true、false和null,我如何知道用户按下了哪个按钮?

定义您自己的枚举,并提供一个静态方法来显示返回枚举的窗口

下面的代码做了同样的事情,它是一个窗口的一部分,允许用户查看他们的更改并接受或取消。因为我只需要true和false,所以我使用了bool,但是更改为enum是很简单的

public static bool DisplayChanges(List<INormalizedMessage> LstMessages)
        {
            var retlist = LstMessages.Where(( INormalizedMessage NM ) => { return NM.Status != NormalizedMessageStatus.NoChange; });
            ReviewChanges RC = new ReviewChanges();
            RC.Messages = retlist.ToList();
            RC.ShowDialog();
            return RC.Result;

        }

        private void cmdCancle_Click( object sender, RoutedEventArgs e )
        {
            Result = false;
            Hide();
        }

        private void cmdOK_Click( object sender, RoutedEventArgs e )
        {
            Result = true;
            Hide();
        }
公共静态bool显示更改(列表消息)
{
var retlist=LstMessages.Where((非规范化消息NM)=>{return NM.Status!=NormalizedMessageStatus.NoChange;});
ReviewChanges RC=新的ReviewChanges();
RC.Messages=retlist.ToList();
RC.ShowDialog();
返回RC.Result;
}
private void cmdCancle\u单击(对象发送方,路由目标)
{
结果=假;
隐藏();
}
私有void cmdOK_单击(对象发送方,路由目标)
{
结果=真;
隐藏();
}

如果您以这种方式创建自定义窗口,则不必担心DialogResult

您可以在窗口中的属性中跟踪该属性,并在对话框关闭后读取该属性

 MyDialog window = new MyDialog();
 if (window.ShowDialog() == false)
 {
    // user closed the window...
 }

 var choice = window.CustomPropertyContainingChoice;