我程序的主菜单使用由ContextMenu组成的MenuItems。在我的程序本地化过程中(使用资源字典),我将DynamicResource设置为每个HeaderMenuItems。奇怪的是,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();
}

最佳答案

您是否已将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中设置本地化的信息,请参见this msdn link

关于c# - 为什么MenuItems不能与DynamicResource一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20529202/

10-08 21:16