6

我的程序的主菜单使用ContextMenuMenuItems. 在我的程序本地化期间(使用资源字典),我将 a 设置DynamicResourceHeader我的每个MenuItems. 奇怪DynamicResource地编译,但似乎不影响本地化过程中的任何变化(语言Headers没有改变)。

示例MenuItem

//I'm not sure if the x:Name or the PlacementRectangle is interfering with anything...
<ContextMenu x:Name="MainContextMenu" PlacementRectangle="{Binding RelativeSource={RelativeSource Self}}">
<MenuItem Header="{DynamicResource open}" />
</ContextMenu>

控制的约束是什么MenuItem?它应该与它一起工作DynamicResource吗?我的总体目标是本地化这些strings,我该怎么做?

该程序在 WPF 中。谢谢你。

更新: 这是我的 App.xaml 文件中引用我的资源字典的方式:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="Lang.en-US.xaml" />
        </ResourceDictionary.MergedDictionaries>
    <ResourceDictionary>
<Application.Resources>

更新 2: 我的英语资源词典中的示例字符串:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">

    <sys:String x:Key="open">Open</sys:String>
</ResourceDictionary>

更新 3: 我如何将当前资源字典更改为西班牙语的示例函数:

private void spanishChange_Click(object sender, RoutedEventArgs e)
{
    Application.Current.Resources.MergedDictionaries.Clear();

    Application.Current.Resources.MergedDictionaries.Add(
            (ResourceDictionary)Application.LoadComponent(new Uri("LangspES.xaml", UriKind.Relative)));

    LanguageChange.FireLanguageChanged();
}
4

1 回答 1

2

您是否将 LANGUAGE.xaml 文件添加到 App.ResourceDictionary 或控制 ResourceDictionary?

例如

<Application.Resources>
    <ResourceDictionary Source="LANGUAGE1.xaml" />
    <ResourceDictionary Source="LANGUAGE2.xaml" />
</Application.Resources>

如果不是,您如何引用您的资源字典?

更新:

如果你改变

<MenuItem Header="{DynamicResource open}" />

<MenuItem Header="{StaticResource open}" />

那么它有效吗?甚至可以

<TextBox DockPanel.Dock="Top" Text="{StaticResource open}" />

工作 ?

看起来您的 xaml 应该可以工作,这让我想知道您是否在应用程序中正确设置了本地化?

有关如何在 .net 4.5 中设置本地化,请参阅此 msdn 链接

于 2014-01-08T16:25:10.460 回答