使用自定义类绑定创建复选框组合框

时间:2013-08-28 00:59:20

标签: c# wpf xaml

这很简单,我为Strings和Bools准备了一个小容器类:

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中执行某些操作以允许访问Field并检查filterBundle1列表中的每个Filter?

1 个答案:

答案 0 :(得分:2)

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

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

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

Fields = new ObservableCollection<Filter>(MyFieldList);

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