0
我有以下的DataGrid:如何让我的DataGrid行只在通过CheckBox选择时才高亮显示?
<DataGrid x:Name="TheList" Grid.Row="1" ItemsSource="{Binding People}" SelectionMode="Extended" SelectionUnit="FullRow" AutoGenerateColumns="False"
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected}">
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=DataContext.AllSelected, RelativeSource={RelativeSource AncestorType=DataGrid}}"></CheckBox>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding GivenName}" Header="Given Name" />
...
<DataGridTextColumn Binding="{Binding BranchName}" Header="Branch" />
</DataGrid.Columns>
</DataGrid>
我更喜欢使用CheckBox
的选择,因为它给了 - 我想 - 更清晰,更积极的用户反馈,选择了什么。
现在我的问题是,如果我点击一行,该行以蓝色突出显示,但在该行的项目中,IsSelected
属性仍然是错误的。很明显,它没有被选中,因为复选框未被选中。
同样,如果我点击一个复选框,我必须点击两次,第一次选择该行作为“活动行”,第二次单击以选中复选框。然后,我可以再次单击该行,并且不再突出显示,但显然由于复选框被选中而选中该行。
这会在我的用户体验中产生某种不协调。我更喜欢单击一行不会突出显示它,但是当我选中它的复选框时,它会变为高亮显示。
我可以做到这一点,以及如何?如果不是,在最坏的情况下,我想关闭DataGrid's
自己的行选择,并没有突出显示的行,只有选中或未选中复选框。
将它绑定到被选中的datagridrow。 – Nkosi
@Nkosi,我不明白你的意思吗? “CheckBox”已经绑定到行内容的IsSelected属性,但我无处可查找如何绑定到行元素本身的“IsSelected”。 – ProfK