我在WPF中有一个MainWindow。如果我单击一个按钮,则执行以下代码:
private void buttonAdvSett_Click(object sender, RoutedEventArgs e)
{
AdvancedSettingsWindow advancedSettingsPopup = new AdvancedSettingsWindow();
advancedSettingsPopup.ShowDialog();
}
正在打开一个新窗口。在这个窗口中,我设置了一些过滤器(通过ComboBoxes)。如果我点击服装“确定”按钮,我想要保存组合框中的字符串。
private void button_Click(object sender, RoutedEventArgs e)
{
// save the strings from the comboboxes if I click OK and close the window
this.Close();
}
我希望你能帮助我。 对不起,我的英语不好。英语不是我的母语。
度过美好的一天。
envy6
更新:
这对我也有用: 在AdvancedSettingsWindow中:
private void button_Click(object sender, RoutedEventArgs e)
{
Foo();
this.Close();
}
public event Action<string> Check;
public void Foo()
{
if(Check != null)
{
Check(methodINeedInMyMainWindow());
}
}
在我的MainWindow中:
private void buttonAdvSett_Click(object sender, RoutedEventArgs e)
{
AdvancedSettingsWindow advancedSettingsPopup = new AdvancedSettingsWindow();
advancedSettingsPopup.Check += value => labelCurrentFilterText.Content = value;
advancedSettingsPopup.ShowDialog();
}
来源:C# - Return variable from child window to parent window in WPF
答案 0 :(得分:0)
您的MainWindow
按钮方法应如下所示:
private void button_Click(object sender, RoutedEventArgs e)
{
AdvancedSettingsWindow newPopupWindow = new AdvancedSettingsWindow();
newPopupWindow.ShowDialog();
if(newPopupWindow.DialogResult == true && newPopupWindow.TestCheckBox.IsChecked == true)
{
string str = newPopupWindow.TestCheckBox.Content.ToString();
//str contains the text in the checkbox
}
}
您的AdvancedSettingsWindow
确定按钮应如下所示:
private void button_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
显然,这假设你只有一个复选框,所以你必须稍微扩展一下这个方法,但这比使用公共工具更有效。