2016-10-19 25 views
0

我有一个XamDataGrid和使用XamTextEditor这样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> 

加载时的样式适用。它显示“正在等待皮卡”作为文本。但是如果我们滚动,并且记录滚动(来回),它将显示状态字段/属性的实际值,即新值。

有趣的是,前景和背景仍然像触发一样。

为什么会这样?有什么遗漏,我必须设置?

回答

0

在没有找到答案之后,我从Infragistics支持处询问了这个问题,他们让我使用ValueToDisplayTextConverter属性。使用它的转换器我已经移动了显示在触发器之外的文本。

在询问为什么滚动只有文本更改,而不是背景和前景。

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