2012-11-15 28 views
0

我有兩個窗口(窗體)。在第一個窗口中,我有一個組合框,第二個窗口中有一個按鈕。當窗口2中的按鈕被點擊時,如何在窗口1中設置組合框的selectedindex?在WPF中的Window2中設置Window1中組合框的SelectedIndex?

我已經試過這沒有成功:

在窗口1

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

在窗口2:

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

       firstwindow.OutputCombostr = 3; 
      } 
+0

你不會碰巧使用MVVM(Model View ViewModel)。如果你是這樣會容易得多,但我認定你不是。 –

回答

0

使用MVVM對您非常有用,但您也可以使用此代碼獲取對主窗口的引用:Application.Current.MainWindow或獲取所有應用程序的窗口: Application.Current.Windows

要訪問您首先需要給它一個名字在XAML代碼的組合框:<ComboBox x:Name="comboBox">...,然後從第二個窗口中進行鑄造(Application.Current.MainWindow as MainWindow).comboBox.IsChecked假設你的主窗口的類是名MainWindow。另外我認爲最好使用MVVM模式來解決這個問題。

希望這可以幫助你...

+0

如何訪問組合框? – Omid

+0

Application.Current.MainWindow是一個Window對象,您需要對其進行強制轉換。請參閱我的答案更新。 –

1

你需要一些如何讓你的MainWindow現有實例的引用類。如果這是WPF,並且該窗口確實是您的啓動對象,那麼您應該可以通過Application.MainWindow(而不是新建)訪問它。

或者,您可能會考慮類似事件聚合器模式。下面是一個可以用作起點的SO問題:Trying to understand the event aggregator pattern

+0

我無法使用Application.MainWindow訪問它。 – Omid

+0

因爲這不是你的啓動窗口?或者是其他東西? – CodingGorilla

+0

這是我的啓動窗口,但我仍然無法訪問組合框。 – Omid

相關問題