0

チェックボックス付きのリストを表示するコンボ ボックスがありますが、1 日のうちに使用可能なオプションが増加することを除いて、正常に動作します。つまり、アイテムをデータバインド リストに追加します。

<ComboBox x:Name="cb"    ItemsSource="{Binding Path=ActiveCommodities}" 
                       IsEditable="True"
                       IsReadOnly="True" 
                      HorizontalAlignment="Left"
                  Text="Commodity Filter">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <CheckBox IsChecked="{Binding IsSelected}" 
                                      Width="20" />
                        <TextBlock Text="{Binding Text}" 
                                       Width="100" />
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

ソートされたリストの値のコレクションを公開するプロパティにバインドしています

   Public ReadOnly Property ActiveCommodities As IList(Of SelectableItem)
        Get
            If Not _activeCommodities Is Nothing Then
                Return _activeCommodities.Values
            End If
            Return Nothing
        End Get
    End Property

get にブレークポイントを設定すると、Values のアイテム数が正しいことがわかりますが、値が上がるとコンボボックスに新しいアイテムが表示されません。

私の選択したアイテムのリストは次のようになります

Public Class SelectableItemList
    Inherits SortedList(Of String, SelectableItem)
    Implements INotifyCollectionChanged

    Protected Sub RaiseCollectionChanged(action As NotifyCollectionChangedAction)
        RaiseEvent CollectionChanged(Me, New NotifyCollectionChangedEventArgs(action))
    End Sub

    Public Event CollectionChanged(sender As Object, e As System.Collections.Specialized.NotifyCollectionChangedEventArgs) Implements System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged


    Public Overloads Function Add(index As String, text As String) As Boolean
        If Not ContainsKey(index) Then
            Dim si As New SelectableItem(text, Me)
            Add(index, si)
            AddHandler si.PropertyChanged, AddressOf OnSelectionChanged
            RaiseCollectionChanged(NotifyCollectionChangedAction.Reset)
            Return True
        End If
        Return False
    End Function

End Class

問題は、値のコレクションにバインドしているためだと思いますか? しかし、sortedcollection にバインドしてデータ テンプレートを機能させる方法がわかりません。

4

0 に答える 0