【发布时间】:2017-10-16 03:45:10
【问题描述】:
我有一个数据网格,itemssoure 是一个 ObservableCollection。 我想在它进入数据网格之前改变它的值格式。 下面是xaml的代码。
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Setters>
<Setter Property="TextBlock.Text" Value="{Binding Path=Cash, Converter={StaticResource DecimalConverter}}"/>
<Setter Property="TextBlock.TextAlignment" Value="Center"></Setter>
</Style.Setters>
</Style>
</DataGrid.CellStyle>
我要改的列是“Cash”,IValueConverter就在这里。
public class DecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double result = 0;
if (value is double)
result = (double)value;
return result.ToString("F2");
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
当我将断点放在函数 DecimalConverter 上时,它实际上开始被调用,并按照我想要的方式处理(返回格式为 F2)。 但它不起作用,数据网格仍然以未处理的方式显示值。 我知道我还有其他方法可以实现这一点,但我只想知道为什么这不起作用。是 IValueConverter 还是 xaml 代码不正确。
【问题讨论】:
标签: c# wpf xaml datagrid ivalueconverter