XamTextEditor 文本值触发器应用一次但稍后失败

XamTextEditor Text Value Trigger applies once but Fails later

我有一个 XamDataGrid 并像这样使用 XamTextEditor

<dp:Field Name="Status" Label="Status">
  <dp:Field.Settings>
      <dp:FieldSettings AllowEdit="False"
                        EditorStyle="{StaticResource StatusStyle}" CellWidth="100" />
  </dp:Field.Settings>
</dp:Field>

和这样的风格

<Style x:Key="StatusStyle" TargetType="{x:Type igWpf:XamTextEditor}">
  <Setter Property="FontSize" Value="11" />
  <Setter Property="FontWeight" Value="Bold" />
    <Style.Triggers>
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                            AncestorType=dataPresenter:CellValuePresenter},
                            Path=Record.DataItem.Status}" Value="New">
        <Setter Property="Background" Value="{StaticResource DkRed}" />
        <Setter Property="Foreground" Value="AntiqueWhite" />
        <Setter Property="Text" Value="Awaiting Pickup" />
      </DataTrigger>
    </Style.Triggers>
</Style>

样式在加载时应用。它将 "Awaiting Pickup" 显示为文本。但是如果我们滚动,并且记录被滚动(来回),它会显示 Status field/property 的实际值,即 New.

有趣的是,前景和背景在触发器中保持原样。

为什么会出现这种行为?有什么我必须设置的吗?

在这里找不到任何答案后,我向 Infragistics 支持部门询问了这个问题,他们让我使用 ValueToDisplayTextConverter 属性。使用它的转换器,我将显示的文本移到了触发器之外。

On asked why on scroll only text changes and not background and foreground.

XamDataGrid 的性能优化要求在需要在屏幕上显示时加载单元格。 此外,当它们滚出视图时,它们并不总是被清除(兑现),该元素会被保留并再次使用。

您可以在这些文章中找到更多信息: http://help.infragistics.com/doc/WPF/2016.1/CLR4.0/?page=xamData_Performance_Optimizations_Overview.html

http://help.infragistics.com/Help/Doc/WPF/2016.1/CLR4.0/html/xamData_Cells_CellValuePresenters_and_Cell_Virtualization.html