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.
有趣的是,前景和背景仍然是在触发。
为什么会有这种行为?有遗漏的东西需要补上吗?
在这里找不到任何答案后,我向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