根据按下的按钮执行代码

时间:2018-02-14 19:44:03

标签: c# wpf mvvm

假设我创建了一个WPF窗口。在WPF窗口内部是一个名为“displayTable”的数据网格。当且仅当用户单击确认按钮时,我想基于该表执行代码。我该怎么做呢?

在其他情况下,我一直在使用ICommands,但我需要访问对话框

exampleDialogWindow dialog = new exampleDialogWindow()
{
Topmost = true
};
dialog.ShowDialog();

//Only execute this if the confirm button is pressed
foreach (DataRowView row in dialog.displayTable.SelectedItems)
{
    Console.Out.WriteLine(row["Col1"]);
}

也许有办法利用返回的值?

if (dialog.ShowDialog().Value)

2 个答案:

答案 0 :(得分:1)

您的ViewModel可能会有一些公共事件,您的View可能会对这些事件产生影响。因此,只要单击该按钮,ViewModel中的ICommand就会启动该事件,然后在视图中调用已存在的代码,然后从该视图代码中显示该对话框。

答案 1 :(得分:1)

我发现这样做的最简单方法就是这样

if (dialog.ShowDialog().Value)     
foreach (DataRowView row in dialog.displayTable.SelectedItems)
{
    SubVwr.Tables[0].Dummy.Rows.Add(null, null, null, null, null, row["PID"], row["PN"], row["Description"], row["Revision"], row["Mfr"], row["UOM"], row["PricePer"]);
}

使用接受按钮的按钮单击事件,如下所示

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

理想情况下,我在xaml.cs中不需要任何内容​​,将来我想通过viewmodel找到一种方法。