如何根据我的 dataBinding 在我的 ComboBox 中显示第一项?

How do I display the first item in my ComboBox based on my dataBinding?

Xaml:

<ComboBox Grid.Row="1"
                  Name="CmbClasse"
                  Grid.Column="3"
                  Margin="5,5,5,5"
                  ItemsSource="{Binding DataContext.Classeses}"
                  SelectedValuePath="ClasseId"
                  DisplayMemberPath="ClasseName"
                  SelectedValue="{Binding DataContext.CurrentSelectedPersonagem.IdClasse, Mode=TwoWay}"/>

当我打开我的应用程序时,ComboBox 没有显示任何默认项。但是项目列表正在工作,上面有所有项目。请帮助,如果需要图像,请询问。 谢谢

这是我一直使用的方法。

首先,您的视图模型应具有两个属性,一个代表 collection,另一个代表所选项目。

public IEnumerable<YourObject> MyObjects { get; private set; }
public YourObject SelectedObject { get; private set; }

注意:最好为 MyObjects 使用 ObservableCollection,并实现 INotifyPropertyChanged。如果您需要在视图模型中创建 collection 的全新实例,请仅 使用此选项。

然后您的 ComboBox 应该绑定到这些属性,如下所示:

<ComboBox ItemsSource="{Binding MyObjects}"
          SelectedItem="{Binding SelectedObject}"
          ... 
          />

现在,魔法来了。当您 创建 您的 collection 时,只需将 SelectedObject 设置为列表中的 FirstOrDefault 项目。

private void LoadData()
{
    //TODO: Load the data into the collection

    //Set the first item
    this.SelectedObject = MyObjects.FirstOrDefault();
}

这将确保始终选择第一项。您 不需要SelectedObject 属性 上实施 INotifyPropertyChanged 除非您计划手动更改此 属性 的值你的视图模型。