【发布时间】:2021-03-25 00:13:17
【问题描述】:
我在模型中有一个具有以下属性的类记录:
public class Record
{
public string RecordID { get; set; }
public string Status { get; set; }
public string Profiler { get; set; }
public bool IsChecked { get; set; }
}
在我的视图模型中,我从类中创建了一个列表,并从数据库中填充了它。此列表是我的 datagridview 的 itemsource,列绑定到 Record 类的属性:
private List<Record> _recordList;
public List<Record> RecordList
{
get { return _recordList; }
set
{
_recordList= value;
OnPropertyChanged("RecordList");
}
}
RecordList = new List<Record>();
我应该将 IsChecked 属性绑定到 Checkbox 的逻辑放在哪里?我是否在模型中放入 IsChecked 属性的设置器?
i在DataGrid(DV记录ID:ALL)中有一行,当检查其复选框时,还将根据特定条件在数据摩口检查/选择其他行。把它放在 setter 里安全吗?
【问题讨论】:
-
你想实现什么样的逻辑?
-
@RobertHarvey 在这种情况下,当勾选了“所有”记录 ID 复选框的行时,它还会根据条件勾选其他行的复选框,同时将 IsChecked 属性更新为 true对应的项目。
-
您是否在 RecordList 中添加了一个虚拟行来支持 Top most ALL 行?
-
@PrateekShrivastava 是的,该行是手动添加的以符合设计规范。
-
我认为您可以在 VM 中使用一个命令来处理 CheckBox Checked。将 Binding 项作为参数传递给 Command。在 Command 方法中,您必须(脏)检查所有项目并对其做出反应(即循环通过 RecordList 并为所有项目设置 IsChecked True)。