2015-04-06 61 views
0

還有其他文章關於此,但沒有任何適合我的情況編程設置選定的值。以編程方式在窗口啓動時設置數據綁定組合框

我有一個WPF窗口有一個組合框,並作爲該窗口的輸入,我有一個ID值對應於此數據綁定組合框中的值。我試過幾種方法來設置combobox.SelectedItem或者combobox.SelectedIndex等,每次都不會改變。更深入地看,因爲我在調用InitializeComponent()之後從窗口構造函數執行此操作。不幸的是,combobox.Items沒有被填充,所以Items列表的計數爲0.綁定正確地發生,但顯然它不會被掛鉤,直到窗口構造函數完成之後。

這是組合框的下調XAML:

<ComboBox Name="Combobox_cmb" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Path=Names}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectionChanged="Name_cmb_SelectionChanged" /> 

當然,「名」是被試圖設置所選值之前加載的可觀察名單。即使填充後端列表,如果在填充列表之後並在設置所選值之前查看Combobox_cmb.Items,Combobox_cmb.Items爲空。

有沒有辦法將值傳遞給窗口,並有一個組合框默認爲該項目?

謝謝

+0

您如何/在哪裏實例化窗口,並且您使用的是MVVM模式和/或任何MVVM框架? – goobering

回答

0

你試過在Window.Loaded事件中做它嗎?試試這樣做:

public YourWindow() 
{ 
    InitializeComponent(); 
    this.Loaded += Window_Loaded; 
    this.Datacontext = viewmodel // if you'r going with MVVM 
} 

public void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    Combobox_cmb.ItemsSource = ((Viewmodel)this.DataContext).Names; //Names should be in your viewmodel if you're going with MVVM. If not just use DataContext as this codebehind and place the list here. 
} 

不知道這是否有助於因爲我不能上下文回答。也許提供更多的代碼。

+0

謝謝。這工作完美。我以前應該想到這一點。我想我的視野太狹窄了。再次感謝。 – user2975847

+0

不錯!很高興我能幫上忙! :D只需將答案標記爲正確,以便未來的人可以更快地看到答案;) – Ninglin

相關問題