加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Checkboxes绑定 – 什么是更好的解决方案?

发布时间:2020-12-15 08:46:40 所属栏目:百科 来源:网络整理
导读:我的wpf格式中有20多个复选框.我需要在一些对象中存储来自所有这些的IsChecked值. 我知道两种方式. 1)使用依赖属性(如here)将所有复选框绑定到对象中的相应属性 2)处理所有这些的Clicked事件 哪种解决方案更好?是否有更好的解决方案在代码隐藏中占用更少的
我的wpf格式中有20多个复选框.我需要在一些对象中存储来自所有这些的IsChecked值.

我知道两种方式.

1)使用依赖属性(如here)将所有复选框绑定到对象中的相应属性

2)处理所有这些的Clicked事件

哪种解决方案更好?是否有更好的解决方案在代码隐藏中占用更少的空间?

解决方法

绝对使用绑定

如果您的CheckBox不相关并且到处都是,那么您需要在DataContext或ViewModel中绑定20个不同的依赖项属性

如果您的CheckBox都在一起,例如一个接一个地列出或在Grid中列出,您可以将它们放在一个集合中并将ItemsControl绑定到它们

<ItemsControl ItemsSource="{Binding Options}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding Description}" 
                      IsChecked="{Binding IsChecked}" />
        </DataTemplate>
    </ItemsControl>
</ItemsControl>

您的ViewModel或DataContext将包含以下内容:

private List<Option> options;

private List<Option> Options
{
    get 
    {
        if (options== null)
        {
            options = new List<Option>();

            // Load Options - For example:
            options.Add(new Option { Description = "Option A",IsChecked = false });
            options.Add(new Option { Description = "Option B" });
            options.Add(new Option { Description = "Option C",IsChecked = true});
        }
        return options; 
    }
}

你的Option类就是这样

public class Option
{
    public string Description { get; set; }
    public bool IsChecked { get; set; }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读