gpt4 book ai didi

wpf - DataGrid - 在运行时更改列标题

转载 作者:行者123 更新时间:2023-12-05 01:06:49 27 4
gpt4 key购买 nike

我目前正在开发一个多语言应用程序,其中界面文本可以在运行时根据用户选择的语言进行交换。我正在使用 ResourceDictionary 中定义的 DynamicResources 并在更改语言时交换字典文件。这适用于除 DataGrid 的 Column Header 属性之外的所有内容。我知道 DataGrid 列不是可视树的一部分,并且过去曾使用代理绑定(bind)到我的 VM 中的属性,但是,在这种情况下,没有绑定(bind)到 VM。交换 ResourceDictionary 时如何更新列标题?

我交换字典的方法如下。这驻留在 Application.xaml.vb 中,并在应用启动时调用,传递保存在 MySettings.Default 中的字符串。这也称为使用绑定(bind)到 ComboBoxSelectedIndex 的 VM 中的属性的信使。

Private Sub SetLanguage(ByVal language As String)
Dim dic As ResourceDictionary = Nothing
Dim langFile As String = Environment.CurrentDirectory & "\Languages\" & language & ".xaml"
If File.Exists(langFile) Then
Using fs As FileStream = New FileStream(langFile, FileMode.Open)
dic = CType(XamlReader.Load(fs), ResourceDictionary)
If LanguageCount > 0 Then
Resources.MergedDictionaries.RemoveAt(Resources.MergedDictionaries.Count - 1)
End If
Resources.MergedDictionaries.Add(dic)
End Using
End If
LanguageCount += 1
End Sub

相关的 DataGrid xaml
<DataGridTextColumn Header="{DynamicResource G_Spec}" ... />

资源字典条目
<system:String x:Key="G_Spec">Spec:</system:String>

最佳答案

这是一个极其简化的例子,基本上可以使用HeaderTemplate对于列:

<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{DynamicResource MyColumnHeaderText}" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>

关于wpf - DataGrid - 在运行时更改列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434447/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com