如何在DataGridTextColumn上将XAML中的双值格式化为德语格式

本文关键字:格式化 格式 德语 DataGridTextColumn 上将 XAML | 更新日期: 2023-09-27 18:00:28

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

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

如何在DataGridTextColumn上将XAML中的双值格式化为德语格式

在这种情况下,尝试几个选项:

A。全局设置语言文化对于整个应用程序来说,可以解决一些与当前语言文化相关的问题。

App.xaml添加Startup事件,从而建立必要的语言文化。它影响日期的显示,双值​​,金额等

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>