c# - 使用自定义类绑定(bind)创建复选框组合框

标签 c# wpf xaml

这非常简单,我有一个用于字符串和 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/

相关文章:

xaml - 如何隐藏 PivotItem?

c# - WPF 窗口冷启动 - 显示黑屏

.net - 我可以使用 WPF 窗口中的 XamlReader.Load 或 InitializeFromXaml 来进行窗口定义吗?

c# - CA2000 - "out-of-school-junior-programmers"- 错误或误报?

c# - 如何创建属于标签页的一组控件的全屏 View

c# - 当我填充列表时,如何添加用唯一编号填充的列表属性?

wpf - WPF 布局中的 TextBlock 包装

c# - 在 pythonnet 中导入 .NET 自定义类时出现 ModuleNotFoundError

wpf - 从两个不同的 DataTriggers 为同一属性设置动画

wpf - 将单选按钮组绑定(bind)到 WPF 中的属性