【发布时间】:2020-11-24 21:16:49
【问题描述】:
我想在整个应用程序中重用资源文件中的 DataGridCell 样式,以红色显示负值。问题是,传递给转换器的值是类的父实例,而不是绑定属性的值。
网格列如下所示:
<DataGridTextColumn Header="7 T %" Binding="{Binding Item.V7P, StringFormat=p}" CellStyle="{StaticResource ProzentZelle}"/>
<DataGridTextColumn Header="14 T %" Binding="{Binding Item.V14P, StringFormat=p}" CellStyle="{StaticResource ProzentZelle}"/>
<DataGridTextColumn Header="21 T %" Binding="{Binding Item.V21P, StringFormat=p}" CellStyle="{StaticResource ProzentZelle}"/>
<DataGridTextColumn Header="28 T %" Binding="{Binding Item.V28P, StringFormat=p}" CellStyle="{StaticResource ProzentZelle}"/>
样式资源如下所示:
<con:GtZeroConverterx:Key="G0C"/>
<Style x:Key="ProzentZelle" TargetType="DataGridCell">
<Setter Property="HorizontalAlignment" Value="Right"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=., Converter={StaticResource G0C}}" Value="True">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
转换器代码:
internal class GtZeroConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//value is actually the Item and not one the property passed to Binding
if (System.Convert.ToDecimal(value) >= 0)
{
return true;
}
else
{
return false;
}
}
}
如果Item.V7P 是 0.75,我想在转换器中接收 0.75 作为值,而不是项目本身。如何访问绑定到 datagridcell 而不是整个实例的属性?
【问题讨论】: