2013-12-11 13 views
6

私のプログラムのメインメニューは、MenuItemsで構成されたContextMenuを使用しています。私のプログラム(リソースディクショナリを使用して)のローカライズ中に、のそれぞれのHeaderとしてDynamicResourceを設定しました。不思議なことにDynamicResourceはコンパイルされますが、ローカライズ中の変更には影響していないようです(Headersの言語は変更されません)。 MenuItemなぜMenuItemsはDynamicResourceと連携しませんか?

例:

//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:

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

UPDATE 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> 
これは私のリソースディクショナリが私のApp.xamlファイルで参照されている方法です

更新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(); 
} 
+0

では、Microsoftの推奨を見たことがありますか?見ますかhttp://msdn.microsoft.com/en-us/library/ms788718(v=vs.110).aspx –

+0

はい、これを見ました。これが唯一の解決策であれば、メニューに別の方法を使用する必要があるかもしれません。 –

+0

このMenuItemをどのように作成していますか?それは動作するはずです。 –

答えて

2

あなたはApp.ResourceDictionaryまたはコントロールにLANGUAGE.xamlファイルを追加したのResourceDictionary?

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

あなたのリソースディクショナリをどのように参照していますか?

更新:あなたは

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

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

を変更した場合は

それは、その後動作しますか?またはそうです

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

仕事がありますか?

あなたのxamlが機能するはずです。アプリでローカリゼーションを正しく設定してもらえませんか? .NET 4.5でどのようにセットアップローカライズするための

this msdn link

+0

私はこのような辞書を参照しています –

+0

これらのメソッドは動作しません..

+0

こんにちは...「開かれた」というのは予約語なのではないですか?ちょうど入っているものに変えてみてください(試してみる価値があります)。 –

関連する問題