【发布时间】:2020-12-03 09:13:48
【问题描述】:
我从 SQL 加载数据网格,然后将其绑定
myDataGrid.ItemsSource = dt.DefaultView
dt 是我的数据表。我知道如何根据其中一列中的显式值突出显示一行:
<DataTrigger Binding="{Binding someNumberA}" Value="1">
<Setter Property="Background" Value="Red" />
</DataTrigger>
但是假设我有两列 someNumberA 和 someNumberB 并且想要基于布尔聚合突出显示该行,例如如果 sNA-sNB > 5 则为红色。这在 XAML 中是否可能,如果没有,那么我还能怎么做,因为我从未使用方法显式创建类,只是直接从数据表中加载?现在我确实有办法通过在 SQL 中创建一个布尔列来使其工作,所以我有明确的 T/F 值,然后突出显示该值并隐藏该列。感谢您的任何意见。
根据我使用转换器的建议,我想出了一个非常好的解决方案。
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource CheckGreaseTolerance}">
<Binding Path = "GREASE_UPPER"/>
<Binding Path ="GREASE_LOWER"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
以及它调用的类:
Public Class CheckGreaseTolerance
Implements IMultiValueConverter
Public Function Convert(values() As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IMultiValueConverter.Convert
Dim GU As Decimal = CDec(values(0))
Dim GL As Decimal = CDec(values(1))
If GU - GL > 2 Then
Return False
Else
Return True
End If
End Function
【问题讨论】: