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

本文关键字:一次 失败 之后 文本 触发器 应用 XamTextEditor | 更新日期: 2023-09-27 18:13:35

我有一个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>

样式在加载时应用。它显示"等待取货"为文本。但是如果我们滚动,记录被滚动回来,它会显示状态字段/属性的实际值,即New.

有趣的是,前景和背景仍然是在触发。

为什么会有这种行为?有遗漏的东西需要补上吗?

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

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

On问为什么滚动只改变文本而不改变背景和前景。

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

你可以在这些文章中找到更多信息: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