在高级设置中保存过滤器

时间:2015-10-05 14:11:55

标签: c# wpf

我在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

1 个答案:

答案 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();
    }

显然,这假设你只有一个复选框,所以你必须稍微扩展一下这个方法,但这比使用公共工具更有效。