5

次のように、CompositeCollection で ComboBox を使用しています。

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

表示されたデータは期待どおりですが、デフォルトのインデックス/値/アイテムを、すべてのコンテンツを持つ ComboBoxItem のインデックス/値/アイテムに設定したいだけで、いくつかの問題があります。

私が設定した場合:

<ComboBoxItem Content="All" IsSelected="True"/>

これは完全に無視されます。

私もやってみました:

<ComboBox SelectedIndex="0">

これですべての値が選択されますが、ドロップダウン リストを開くと、強調表示されている値は、すべての値ではなく、ComboBox にロードされた最後の値です。

データバインディング後に ComboBoxItem コンテンツが選択されたままになるようにするにはどうすればよいですか?

編集:

<CollectionContainer>私は myを別のものに置き換えようとしまし<ComboBoxItem>たが、<CompositeCollection>.

EDIT2:

問題の内容を示す画像:

画像

EDIT3:

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

4

1 に答える 1