在 Datagrid 中格式化数值

14

有没有办法对绑定到datagrid中的值进行格式化?例如,我有以下内容:

<DataGrid AutoGenerateColumns="False" Height="487" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dgTransactionLog" VerticalAlignment="Top" Width="404">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=Date}" Header="Date" />
        <DataGridTextColumn Binding="{Binding Path=Payee1.Name}" Header="To/From" />
        <DataGridTextColumn Binding="{Binding Path=Amount}" Header="Amount" />
    </DataGrid.Columns>
</DataGrid>

我希望Date列只显示日期(不显示时间),Amount列以货币格式显示。以下是我如何填充datagrid的代码:

var transactions = TransactionManager.GetTransactions();
dgTransactionLog.ItemsSource = transactions;
3个回答

29

6

最简单的方法就是使用以下代码,将你的语言代码作为ConverterCulture的值。 你可以在这里找到你的语言代码。

<DataGridTextColumn Binding="{Binding Profit, ConverterCulture='gu-IN' ,StringFormat=c}" Header="Profit" Width="*" MinWidth="80" FontWeight="Normal"/>

输出将以您所在地的货币为单位。如果需要其他格式,请参考此处的stringFormat规范。以下是输出的截图:output screenshot

0
如果字符串格式是可变的,上述解决方案将无法工作。
<DataGrid.Resources>
    <DataTemplate x:Key="YTemplate">
        <Label Content="{Binding Y, Mode=OneWay}" ContentStringFormat="{Binding StringFormat, ElementName=Parent_UC}"/>
    </DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
    <DataGridTemplateColumn Header="Y" Width="*" CellTemplate="{StaticResource YTemplate}"/>
</DataGrid.Columns>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接