如何根据我的 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
除非您计划手动更改此 属性 的值你的视图模型。
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
除非您计划手动更改此 属性 的值你的视图模型。