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

时间:2015-06-18 23:33:43

标签: c# wpf entity-framework-5

的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没有显示任何默认项目。但项目列表正在运行,其中包含所有项目。请帮忙,如果需要图像,请询问。 感谢。

1 个答案:

答案 0 :(得分:0)

这是我一直使用的方法。

首先,您的视图模型应该有两个属性,一个用于表示集合,另一个用于表示所选项目。

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

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

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

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

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

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

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

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