我如何格式化在XAML德国格式在DataGridTextColumn双重价值?(How do I f

2019-10-20 01:00发布

我有这样的一段简单的代码,我想知道如何将其转换为德国格式(#。###,##)?

// displays #.##
<DataGridTextColumn Header="Sum Value" Binding="{Binding SumValue}"/>

Answer 1:

在这种情况下,尝试以下几种方法:

A.全局设置的语言文化为整个应用程序,它可以解决与当前语言文化的一些问题。

添加Startup事件App.xaml ,其建立必要的语言文化。 它会影响日期显示,双精度值,金钱总额等:

XAML

<Application x:Class="DataGridTargetUpdateHelp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             Startup="Application_Startup">

    <Application.Resources>

    </Application.Resources>
</Application>

Code-behind

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
            new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage("de-DE"))); // CultureInfo.CurrentCulture.IetfLanguageTag return the current code of language
    }
}

B.使用DataGridTemplateColumn

在这种情况下,你可以设置任何Control在DataGridCell显示值:

<DataGrid.Columns>
    <DataGridTemplateColumn Header="ID">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=ID, StringFormat={}{0:N2}}" xml:lang="de-DE" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>


文章来源: How do I format a double value in XAML to German format on a DataGridTextColumn?