gpt4 book ai didi

c# - 带有 CompositeCollection 的 WPF ComboBox - SelectedIndex 不粘

转载 作者:太空狗 更新时间:2023-10-30 00:53:02 26 4
gpt4 key购买 nike

我正在使用 ComboBox 和 CompositeCollection,如下所示:

<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 内容在数据绑定(bind)后保持选中状态?

编辑:

我刚刚尝试更换我的 <CollectionContainer>与另一个<ComboBoxItem>这样就可以正常工作,即使它们仍在 <CompositeCollection> 中.

编辑 2:

显示问题的图像:

Image

编辑 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()

最佳答案

由于您是在构造 ComboBox 之后添加到您的 Collection 中,因此您可能必须深入了解 Loaded 事件并在那里设置您的 SelectedIndex...

<ComboBox Loaded="ComboBox_Loaded">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="All" />
<CollectionContainer Collection="{Binding Source={StaticResource AllBitsSource}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>

代码隐藏:

private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
(sender as ComboBox).SelectedIndex = 0;
}

关于c# - 带有 CompositeCollection 的 WPF ComboBox - SelectedIndex 不粘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com