2015-04-06 59 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

相关问题