这非常简单,我有一个用于字符串和 bool 值的小容器类:
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) 并尝试将组合框绑定(bind)到其 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 列表中的每个过滤器吗?
最佳答案
尝试使用 ObservableCollection
作为您的 ItemSource
而不是 List
。
public ObservableCollection<Filter> Fields { get; set; }
您可以通过以下方式轻松将您的列表转换为一个列表:
Fields = new ObservableCollection<Filter>(MyFieldList);
一般来说,WPF 依赖于集合和属性,并分别实现 INotifyCollectionChanged
INotifyPropertyChanged
来更新 UI。
关于c# - 使用自定义类绑定(bind)创建复选框组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477783/