2

とてもシンプルです。文字列とブール値用の小さなコンテナ クラスがあります。

public class Filter
        {
        public Filter(string field, bool chec = false)
        {
            Field = field;
            Checked = chec;
        }
        public String Field { get; set; }
        public bool Checked { get; set; }
    }

そして、別のクラスにフィルターのリストがあります:

public class FilterBundle
{
    public List<Filter> Fields { get; set; }
...

ここで、FilterBundle (filterBundle1) を作成し、コンボボックスをその Fields プロパティにバインドしようとします。

<ComboBox Grid.Column="1"
    ItemsSource="{Binding filterBundle1.Fields}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Content="{Binding Field}"
                    IsChecked="{Binding Checked}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
</ComboBox>

ただし、ドロップダウンは空白で空です。フィールドへのアクセスを許可し、filterBundle1 のリスト内の各フィルターのチェックを許可するために、いずれかのクラスのゲッターで行う必要があることはありますか?

4

1 に答える 1

2

ではなくを使用してみてObservableCollectionください。ItemSourceList

public ObservableCollection<Filter> Fields { get; set; }

次の方法で、リストを簡単に変換できます。

Fields = new ObservableCollection<Filter>(MyFieldList);

一般に、WPF はコレクションとプロパティに依存し、INotifyCollectionChanged INotifyPropertyChangedそれぞれ実装して UI を更新します。

于 2013-08-28T01:03:37.310 に答える