如何从WPF中的子窗口获取数据
本文关键字:窗口 获取 数据 WPF | 更新日期: 2023-09-27 18:25:14
我有一个WPF应用程序,在那里我创建了一个表示自定义消息框的新窗口。它有两个按钮——是和否。
我从Parent表单调用它,并期望收到答案,应该是"Yes"
或"No"
,或者true
或false
。
我试图在这里做与Servy
的asnwer相同的事情:C#-在WPF 中从子窗口返回变量到父窗口
但由于某些原因,我从未得到更新的值,所以isAllowed
总是false。
这是我的父窗口中的代码:
bool isAllowed = false;
ChildMessageBox cmb = new ChildMessageBox();
cmb.Owner = this;
cmb.Allowed += value => isAllowed = value;
cmb.ShowDialog();
if (isAllowed) // it is always false
{
// do something here
}
然后在"儿童"窗口中,我有:
public event Action<bool> Allowed;
public ChildMessageBox()
{
InitializeComponent();
}
private void no_button_Click(object sender, RoutedEventArgs e)
{
Allowed(false);
this.Close();
}
private void yes_button_Click(object sender, RoutedEventArgs e)
{
Allowed(true); // This is called when the Yes button is pressed
this.Close();
}
在按钮点击事件处理程序中,首先需要设置DialogResult
属性。像这样:
private void no_button_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
//Do the same for the yes button (set DialogResult to true)
...
这将从ShowDialog
方法返回,您可以简单地将isAllowed
变量分配给ShowDialog
的结果。
bool? isAllowed = false;
...
isAllowed = cmb.ShowDialog();
if (isAllowed == true)
{
...