在WPF中从Window2设置Window1中的组合框的selectedindex?

时间:2012-11-15 17:55:30

标签: c# wpf combobox

我有两个窗口(窗体)。在第一个窗口我有一个组合框,在第二个窗口我有一个按钮。当单击窗口2中的按钮时,如何在窗口1中设置组合框的selectedindex?

我试过这个没有成功:

在Window1中

public int OutputCombostr
    {
        get { return this.OutputCombo.SelectedIndex; }
        set { this.OutputCombo.SelectedIndex = value; }
    }

在Window2中:

  private void Button_Click_2(object sender, RoutedEventArgs e)
            {
                MainWindow firstwindow = new MainWindow();

                firstwindow.OutputCombostr = 3;
            }

2 个答案:

答案 0 :(得分:1)

您需要了解如何获取对MainWindow类的现有实例的引用。如果这是WPF并且该窗口确实是您的启动对象,那么您应该能够通过Application.MainWindow访问它(而不是新建它)。

或者,您可能会查看类似事件聚合器模式的内容。这是一个可以用作起点的问题:Trying to understand the event aggregator pattern

答案 1 :(得分:0)

使用MVVM对您非常有用,但您也可以使用以下代码获取对主窗口的引用:Application.Current.MainWindow或获取所有应用程序的窗口:Application.Current.Windows

要访问组合框,首先需要在xaml代码中为其命名:<ComboBox x:Name="comboBox">...然后,从第二个窗口创建一个强制转换(Application.Current.MainWindow as MainWindow).comboBox.IsChecked,假设您的主窗口的类名为{{ 1}}。另外我认为最好使用MVVM模式来解决这个问题。

希望这对你有帮助......