创建具有自定义类绑定的复选框组合框

本文关键字:复选框 组合 绑定 自定义 创建 | 更新日期: 2023-09-27 18:29:11

这很简单,我有一个字符串和布尔的小容器类:

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>

但是,下拉列表为空。我需要在这两个类的getter中做些什么来允许访问filterBundle1列表中的每个Filter的Field和Check吗?

创建具有自定义类绑定的复选框组合框

尝试使用ObservableCollection作为ItemSource,而不是List

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

您可以通过以下方式轻松地将您的列表翻译为:

Fields = new ObservableCollection<Filter>(MyFieldList);

通常,WPF依赖于集合和属性,并分别实现INotifyCollectionChangedINotifyPropertyChanged来更新UI。