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

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

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

下面是我交换字典的方法。它位于Application.xaml.vb中,在应用程序启动时通过MySettings.Default中保存的字符串调用。这也可以从绑定到ComboBoxSelectedIndex的VM中的属性使用messenger调用

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
相关数据网格xaml

<DataGridTextColumn Header="{DynamicResource G_Spec}" ... />

资源字典条目

<system:String x:Key="G_Spec">Spec:</system:String>
Spec:

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

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


告诉我们如何“交换”资源字典。我也有同样的问题。为什么这样做有效而不有效?非常感谢,解决了我已经工作了近一周的问题!上帝保佑你!