繁体   English   中英

基于IsSelected的WPF DataGridCell样式触发器仅工作一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM