【发布时间】:2013-03-12 09:15:38
【问题描述】:
我一直在尝试弄清楚如何在在线搜索解决方案时将这种自定义行为放入数据网格中。
鉴于以下数据网格(为简洁起见,删除了一些 xaml):
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我已成功地将复选框绑定到每一行的数据绑定对象。 (注意:我使用的是DataGridTemplateColumn,而不是DataGridCheckBoxColumn,因此您无需双击更改值)。
我想要实现的是能够在用户选择一行时勾选复选框/更新数据绑定对象的 Selected 属性。有效地使整行单击设置复选框的选中属性。理想情况下,如果可能的话,我希望在没有代码隐藏文件的情况下执行此操作,因为我试图让我的代码隐藏尽可能干净。
如果可能的话,我想要的另一个功能是单击一行将切换它的选定属性,这样如果您单击另一个,前一个和新的一样保持选中状态。
非常感谢任何帮助。
【问题讨论】:
-
您当前的 IsChecked 绑定到 Selected 是否会出现绑定错误?我认为您可能可以这样做(抱歉,不在要测试的 IDE 附近),但您可能必须确保通过 RelativeSource 搜索绑定到正确的 Selected 属性?
-
Selected 是 datacontext 项(可能不是最佳名称)的属性,而不是 datagridrow,因此可以按预期工作。我正在尝试将其另外绑定到
datagridrowisselected 但我没有找到绑定到此的示例。 -
啊,我明白了,您可能需要查看 DataGrid 上的 SelectedItem 吗?
标签: wpf data-binding datagrid