我正在尝试在 WPF DataGrid 上应用一些条件格式。要求如下。对于网格上的任何单元格,如果内容为整数,则显示格式应为零小数位。如果内容有小数位,则将它们显示为 stringformat 中定义的默认值。
有人对我如何实现这种条件格式有任何想法吗?我编写了一个转换器,它可以检查小数是否存在,但我无法弄清楚如何在我的 XAML 中将它应用于我的单元格样式或我的文本列。
单元格样式 - 这是我要定义的样式
<Style x:Key="MyCellStyle" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
Grid Column - 我将应用应用于此列的样式
<DataGridTextColumn x:Key="ColumnName"
Header="ColumnName"
SortMemberPath="MyColumnSort"
Binding="{Binding myColBinding, StringFormat={}{0:N2}}"
IsReadOnly="True"
Width="40" />
转换器 - 我将使用此转换器来确定是否应用此样式。
public class NoDecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int converted;
int.TryParse(value.ToString(), out converted);
value.ToString();
return int.TryParse(value.ToString(), out converted);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我试图通过向我的单元格样式添加一个数据触发器来做到这一点,如下所示,但我收到一条错误消息,指出“在类型'System.Windows.Controls.DataGridCell' 上找不到样式属性'StringFormat'。”
<Style x:Key="MyCellStyle" TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Style.Triggers>
<DataTrigger Binding="{Binding NoDecimalConvertor}" Value="False" >
<Setter Property="StringFormat" Value="true" />
</DataTrigger>
</Style.Triggers>
</Style>
几天来,我一直在努力反对这一点,因此任何关于解决此问题的最佳方法的指导都将不胜感激。