xaml在Datagrid中翻译列名称

时间:2019-06-13 06:14:35

标签: c# .net wpf xaml datagrid

我使用library(dplyr) library(purrr) df %>% mutate(SOLVED_DATE = as.Date(SOLVED_DATE)) %>% group_by(USER_ID) %>% mutate(Order_History = map_dbl(SOLVED_DATE, ~sum(QUESTIONS_SOLVED[(SOLVED_DATE > . - 7) & (SOLVED_DATE < .)]))) # USER_ID SOLVED_DATE QUESTIONS_SOLVED Order_History # <int> <date> <int> <dbl> # 1 1 2019-05-01 1 0 # 2 1 2019-05-02 1 1 # 3 2 2019-05-02 1 0 # 4 2 2019-05-03 1 1 # 5 2 2019-05-04 1 2 # 6 2 2019-05-05 1 3 # 7 1 2019-05-06 1 2 # 8 2 2019-05-06 1 4 # 9 1 2019-05-07 1 3 #10 2 2019-05-07 1 5 # … with 11 more rows 绑定到DataGrid上,如下所示:

ObservableCollection<T>

网格中的列名称与我的类<DataGrid ItemsSource="{Binding Path=Items}" /> 中的属性名称相同。如何更改这些名称,例如基于当前的文化?

我的Item类具有以下属性:

Item

我在网格中的列名称获得名称“ ThisIsProperty1”和“ Property2”,但是我想设置自定义名称,例如“ P1”和“ Prop 2”。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您只想覆盖某些标头,请尝试以下操作:

<DataGrid ItemsSource="{Binding Path=Items}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Desired Header" Binding="{Binding SomePropToOverride}"/>
        <DataGridTextColumn Header="Another Header" Binding="{Binding SomeOtherPropToOverride}"/>
    </DataGrid.Columns>
</DataGrid>

如果只想显示特定的列,可以将AutoGenerateColumns="false"添加到DataGrid

您可以找到更深入的教程here

答案 1 :(得分:0)

我处理本地化的首选方法是使所有字符串(需要翻译)成为资源字典中的资源。我通常有一个“基本”默认英语资源词典。然后是其他每种语言的资源字典。合并适当的语言。然后,我使用dynamicresource大致按键引用字符串:

Header="{DynamicResource Property2HeaderKey}" 

您可以在磁盘外合并“松散”的未编译资源字典,这使您轻松解耦。如果有人需要一种不寻常的语言,则可以单独提供其文件,甚至在必要时也可以在安装后提供。

您也可以将资源字典作为字符串存储在数据库中,然后通过xamlreader将其动态加载到资源字典中。

通常,您会在应用程序中拥有一个“管理员”或超级用户区域,该区域具有可以用英语显示的功能,因此语言资源字典可以是默认英语字典的子集。