我正在使用DataGrid
CheckBox创建一个WPF DataGridTemplateColumn
控件,其中 IsChecked 属性设置为 true 或 false 取决于DataTable
值)...
如果DataTable
行的值设置为 1 ,则DataGridTemplateColumn
应为 true (已选中)。否则,它将 false (未选中)...默认情况下,每个新行都将设置为 true ,但我无法绑定这些{{1 }行到我的CheckBox
值( 1 或 2 )
我尝试了以下c#代码。它在我完成UserControl版本并循环通过我的DataTable
以保存其值时起作用...但是,当我设置 gridResultados.ItemsSource = dataTable.DefaultView 时,显然没有检查/取消选中我的{ {1}}因为DataTable
列值(1或2)与CheckBoxes
之间没有约束力...这是我最接近的方法:
DataTable
DataGridTemplateColumn
答案 0 :(得分:0)
首先,我建议您不要在WPF中使用DataTable
,因为我们通常在WPF中使用EF,DataTable
是ADO.NET的一部分,它已经过时且几乎已弃用。
对于你的问题,你有一些事情需要修复涉及绑定和触发器。首先,这里每行的隐式DataContext
是DataRowView
。它仅适用于DataTrigger
(不适用于Trigger
)。因此,您需要使用DataTrigger
来监听索引[4]
(它引用第五列 - CheckBox列)。其次,您设置的Style
是错误的,应将其包含在CheckBox.Style
中,以使其了解您为CheckBox
设置了样式,而不是Content
。第三,Style
触发器不能覆盖本地设置的IsChecked
(如在您的代码中),在这种情况下,模板触发器可以覆盖它,但您也可以使用样式设置器来设置默认值{{1} } True
。
以下是您应该拥有的代码:
IsChecked
顺便说一句,我可以看到你使用事件处理程序来更新底层数据的值。但对于MVVM来说,这不是正确的方法,你需要的几乎就是绑定和相关的东西。不过那部分是你的,你需要对此进行更多研究。我认为这足以结束这个问题。