我的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; } }