我正在使用带有 CompositeCollection 的 ComboBox,如下所示:
<ComboBox>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="All"></ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource AllBitsSource}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
显示的数据完全符合预期,只是我现在想将默认索引/值/项目设置为内容为 All 的 ComboBoxItem 的值,并且遇到了一些问题。
如果我设置:
<ComboBoxItem Content="All" IsSelected="True"/>
这被完全忽略了。
我也尝试过:
<ComboBox SelectedIndex="0">
虽然这确实选择了 All 值,但当我打开下拉列表时,突出显示的值是加载到 ComboBox 上的最后一个值,而不是 All 值。
如何解决此问题,以便我的 ComboBoxItem 内容在数据绑定后保持选中状态?
编辑:
我刚刚尝试用<CollectionContainer>
另一个替换我的<ComboBoxItem>
并且它工作正常,即使它们仍然在<CompositeCollection>
.
编辑2:
显示问题所在的图像:
编辑3:
AllBitsSource 的代码:
XAML:
<Window.Resources>
<CollectionViewSource x:Key="AllBitsSource" Source="{Binding Path=AllBits}" />
后面的代码:
private readonly ObservableCollection<string> _bits = new ObservableCollection<string>();
private void GetCurrentSettings()
{
setttings = display.GetDisplaySettings();
foreach (var mode in setttings)
{
var displaySettingInfoArray = mode.GetInfoArray();
if (_bits.Contains(displaySettingInfoArray[4]) == false)
{
_bits.Add(displaySettingInfoArray[4]);
}
}
}
public ObservableCollection<string> AllBits
{
get { return _bits; }
}
GetCurrentSettings()
被调用Main()