我有一个WPF ComboBox
,它绑定到一个自定义对象列表,每个对象都包含一个IsSelected
属性。此属性绑定到其对应的ComboBoxItem
的{{1}}属性。在最初创建列表时,我将特定对象的IsSelected
属性设置为IsSelected
,期望在最初显示ComboBox时选择此项。但是,无论绑定列表中的哪个对象将true
属性设置为IsSelected
,ComboBox始终会将列表中的第一个项目显示为已选中。
我知道绑定工作正常,因为当我点击true
并展开以显示所有可用选项时,ComboBox
会更新以显示正确的所选项目。
这是定义我的ComboBox
的XAML。它位于ComboBox
中,并且会在页面中动态添加/删除(如果完全相关的话):
DataTemplate
答案 0 :(得分:3)
尝试删除IsSynchronizedWithCurrentItem="True"
。该设置告诉控件在绑定集合生成的CurrentItem
上使用ICollectionView
,默认为列表中的第一项。如果您想查看它的功能,可以使用CollectionViewSource.GetDefaultView(YearList)
然后查看或更改当前项目,在代码中使用此视图。
答案 1 :(得分:0)
尝试绑定到 SelectedItem 属性, ComboBox 默认情况下不会选择第一项但是您的数据源绑定:
<ComboBox ItemsSource="{Binding YearList, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem="{Binding <YourDefinedSelectedItemProperty>, RelativeSource={RelativeSource AncestorType=Window}}">
希望这有帮助。