C# 在窗口启动时以编程方式设置数据绑定组合框

C# 在窗口启动时以编程方式设置数据绑定组合框,c#,wpf,xaml,combobox,C#,Wpf,Xaml,Combobox,关于这一点,还有其他的帖子,但是没有任何东西适合我编程设置所选值的情况 我有一个WPF窗口,它有一个组合框,作为该窗口的输入,我有一个ID值,它对应于这个数据绑定组合框中的值。我尝试了几种方法来设置combobox.SelectedItem或combobox.SelectedIndex等,每次,值都不会改变。更深入地看,因为我是在调用InitializeComponent()后从窗口构造函数执行此操作的。很遗憾,combobox.Items未填充,因此Items列表的计数为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为空

有没有一种方法可以将值传递给窗口,并将组合框默认值传递给该项


谢谢

您是否尝试在窗口中执行此操作。已加载事件?尝试这样做:

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.
}

我不知道这是否有帮助,因为我无法将答案上下文化。可能会提供更多的代码

如何/在何处实例化窗口,是否使用MVVM模式和/或任何MVVM框架?谢谢。这非常有效。我应该早就想到这一点。我想我的视野太狭隘了。再次感谢,很好!很高兴我能帮忙!:D只要把答案标为正确,将来的人就能更快地看到它;)