我有一个带有一个 CheckBox 列的 wpf DataGrid....
然后当我选中或未选中 WPF DataGrid 列的复选框时如何获取 wpf 数据网格的 RowIndex...
我知道在 DataGrid 中检索行索引的唯一方法是遍历可视化树并对其进行计数。通常,将逻辑基于 wpf 数据网格中的行索引是一个坏主意。这是因为默认情况下网格是虚拟化的,并且该索引可能会误导。
所以要走的路是向您的 ViewModel 添加一个数字,该数字作为您的行的数据源提供,并在您的事件处理程序中使用它。
实际上你不需要行索引。你真正需要的是改变你的绑定项目。根据您之前的问题,您正在尝试更改分配给网格的项目属性。您不必手动执行此操作。如果你有课
public class UserForm
{
public int FormId { get; set; }
public string FormName { get; set; }
public bool Visibility { get; set; }
}
并将表格列表分配给DataGrid
:
<DataGrid ItemsSource="{Binding UserForms}" />
或从代码
dataGrid.AutoGenerateColumns = true;
dataGrid.ItemsSource = UserForms;
UserForm
然后,当您选中/取消选中网格可见性列中的复选框时,将更新绑定对象的属性。