假设我创建了一个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)
答案 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找到一种方法。