我的程序主菜單使用ContextMenu
組成MenuItems
。在我的程序本地化過程中(使用資源字典),我將DynamicResource
設置爲我的MenuItems
中的每一個的Header
。奇怪的是DynamicResource
編譯,但似乎不影響本地化過程中的任何更改(Headers
上的語言不會更改)。爲什麼MenuItem不能使用DynamicResource?
的實施例一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中。謝謝。
UPDATE: 這是我的資源字典是如何在我的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: 例子f結對我如何改變目前的資源字典西班牙:
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();
}
你看着微軟的建議? http://msdn.microsoft.com/en-us/library/ms788718(v=vs.110).aspx –
是的,我見過這個。如果這是唯一的解決方案,它看起來像我可能需要使用另一種方法爲我的菜單。 –
你是如何創建這個MenuItem的?它應該工作。 –