【问题标题】:WPF DataGridCell Style Trigger based on IsSelected only works once基于 IsSelected 的 WPF DataGridCell 样式触发器只工作一次
【发布时间】:2016-09-27 17:00:16
【问题描述】:

我一直在尝试对 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 每个单元格只能工作一次。顺便说一句,如果我将视图退出编辑模式并使用也在视图上的按钮将其放回原处,它将再次工作......每个单元格一次。

有没有人知道为什么会发生这种奇怪的行为?

【问题讨论】:

    标签: c# wpf xaml wpfdatagrid


    【解决方案1】:

    好的。我不明白为什么 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      相关资源
      最近更新 更多