还有其他相关内容,但没有任何内容符合我的情况,以编程方式设置所选值。
我有一个带有组合框的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" />
当然&#34;姓名&#34;是一个可观察的列表,在尝试设置所选值之前加载。即使填充了后端列表,如果在填充列表之后和设置所选值之前查看Combobox_cmb.Items,则Combobox_cmb.Items为空。
有没有办法将值传递给窗口并且组合框默认为该项?
谢谢
答案 0 :(得分:1)
您是否尝试过在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.
}
不知道这是否有助于我无法将答案置于语境中。也许提供更多的代码。