复选框绑定 - 什么是更好的解决方案?

Ond*_*cek 6 c# data-binding wpf checkbox events

我的wpf格式中有20多个复选框.我需要IsChecked在某些对象中存储所有这些值.

我知道两种方式.

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

2)处理Clicked所有这些事件

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

Rac*_*hel 3

绝对使用 Binding

如果您的复选框不相关并且遍布各处,则您需要在 DataContext 或 ViewModel 中绑定 20 个不同的依赖属性

如果您的复选框都在一起,例如一个接一个地列出或在网格中,您可以将它们放入一个集合中并将 an 绑定ItemsControl到它们

<ItemsControl ItemsSource="{Binding Options}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding Description}" 
                      IsChecked="{Binding IsChecked}" />
        </DataTemplate>
    </ItemsControl>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

您的 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; 
    }
}
Run Code Online (Sandbox Code Playgroud)

你的Option课程就是

public class Option
{
    public string Description { get; set; }
    public bool IsChecked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)