[英]WPF DataGridCell Style Trigger based on IsSelected only works once
我一直在尝试对WPF DataGrid进行一次单击单击,并且查看了很多关于stackoverflow的解决方案,但是还有一个尚未解决的用例。 我需要设置一个样式触发器,但我不仅需要一直将IsEditing设置为true。 我需要第二种条件。 我遇到的问题是每个单元只能使用一次。
这是几乎可以使用的XAML。
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.IsEditing}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEditing" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
问题在于,每个单元只能工作一次。 现在,如果我将第一个条件更改为基于IsFocused,则它始终有效。 这样做的问题是,由于明显的原因,我无法单击单元格中的文本框。 我真的很茫然,为什么IsSelected每个单元格只能工作一次。 顺便说一句,如果我将视图从编辑模式中移出,然后使用同样位于视图上的按钮将其放回原处,它将再次起作用...对于每个单元格一次。
有人对这种奇怪行为为什么会发生有任何见解吗?
好。 我不明白为什么IsSelected不起作用,但是我确实找到了一个起作用的属性,然后让我在单元格的文本框中键入内容。 诀窍是使用IsKeyboardFocusWithin属性。 这是按预期工作的完整解决方案:
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsKeyboardFocusWithin}" Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.IsEditing}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEditing" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.