【问题标题】:WPF DataGrid shows dot instead commaWPF DataGrid 显示点而不是逗号
【发布时间】:2017-03-17 13:33:00
【问题描述】:

在互联网上挖掘并搜索没有结果的答案后,我想向您寻求帮助。我有一个包含 2 列的 SQL 数据库表(浮点数据类型,例如 1,2 1,3 1,4 等)

绑定到DataGrid

XAML 代码:

<CollectionViewSource x:Key="Tab_LosTab_PolterTab_PoltersektionViewSource" Source="{Binding Tab_Polter_Tab_Poltersektion, Source={StaticResource Tab_LosTab_PolterViewSource}}"/>

<DataGrid x:Name="Tab_PoltersektionDataGrid" IsReadOnly="False" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource Tab_LosTab_PolterTab_PoltersektionViewSource}}" Margin="10,250,10,60" RowDetailsVisibilityMode="VisibleWhenSelected">
    <DataGrid.Columns>
    <DataGridTextColumn x:Name="Polter_H_vornColumn" Binding="{Binding Polter_H_vorn}" Header="Polterhöhe vorn" Width="*"/>
    <DataGridTextColumn x:Name="Polter_H_hintenColumn" Binding="{Binding Polter_H_hinten}" Header="Polterhöhe hinten" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

和Vb.Net代码:

Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles MyBase.Loaded
    Dim DataSet1Tab_PoltersektionTableAdapter As PV.DataSet1TableAdapters.Tab_PoltersektionTableAdapter = New PV.DataSet1TableAdapters.Tab_PoltersektionTableAdapter()
    DataSet1Tab_PoltersektionTableAdapter.Fill(DataSet1.Tab_Poltersektion)
    Dim Tab_LosTab_PolterTab_PoltersektionViewSource As System.Windows.Data.CollectionViewSource = CType(Me.FindResource("Tab_LosTab_PolterTab_PoltersektionViewSource"), System.Windows.Data.CollectionViewSource)
    Tab_LosTab_PolterTab_PoltersektionViewSource.View.MoveCurrentToFirst()
End Sub

我的问题是我的DataGrid 以这种方式显示这些值:1.2 1.3 1.4 我需要它们显示如下:1,2 1,3 1,4 等。当我尝试编辑一些值并输入1,2 它返回 12。我的 PC 语言首选项设置为欧洲语言。有什么建议吗?

【问题讨论】:

  • 欢迎来到文化地狱。我猜欧洲文化是德国的?
  • 是的,它是德语
  • This page 可能会帮助您获得一些想法。我特别喜欢设置cultureInfo 帖子。

标签: wpf vb.net xaml


【解决方案1】:

您可以使用IValueConverter 来处理此问题。

public class GermanNumberConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((float)value).ToString(CultureInfo.CreateSpecificCulture("de-DE"));
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return float.Parse(value.ToString());
    }
}

在您的 xaml 代码中,您可以像这样使用此转换器

<DataGridTextColumn Binding="{Binding Polter_H_hinten, Converter={StaticResource GermanNumberConverter}}" />

您也必须在 Window 中指定转换器。

<Window.Resources>
    <ResourceDictionary>
        <c:GermanNumberConverter x:Key="GermanNumberConverter" />
    </ResourceDictionary>
</Window.Resources>

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 2012-06-09
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多