他のxaml.cs上からMainWindow.xamlのDynamicResourceをバインドさせるにはどうすればいいでしょうか。
ソース上では、Language.xaml.csの以下thisの部分です。
以下Language.xaml.cs上の該当箇所自体は問題なく読み込んでくれるのですが、MainWindow.xamlのlanguageへのバインドのさせ方が分からず詰まっています。
。
C#
1this.Resources.MergedDictionaries.Add(dictionary); //これではLanguage.xamlでバインドされる 2//MainWindow.Resources.MergedDictionaries.Add(dictionary); //エラー
尚、以下サイト3つ目を参考にしています。
https://tocsworld.wordpress.com/2014/08/13/%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%AF%BE%E5%BF%9Cc%E3%80%81wpf%E7%B7%A8/
<StringResource.en-US.xaml>
xaml
1<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 3 xmlns:system="clr-namespace:System;assembly=mscorlib"> 4 <system:String x:Key="language">Language</system:String> 5 6</ResourceDictionary>
<MainWindow.xaml>
xaml
1 2 <Grid> 3 <StackPanel x:Name="FooterColum"> 4 <TextBlock Text="{DynamicResource language}" /> 5 6 </StackPanel> 7 </Grid>
<Language.xaml>
xaml
1 2 <Grid x:Name="LanguageMenuPannel"> 3 4 <StackPanel> 5 <RadioButton x:Name="radioButton_ENG" Content="English" Height="22" VerticalContentAlignment="Center" Checked="RadioButtonENG_Checked"/> 6 <RadioButton x:Name="radioButton_JPA" Content="日本語" Height="22" VerticalContentAlignment="Center" Checked="RadioButtonJPA_Checked"/> 7 <TextBlock x:Name="TestTextBox" Text="{DynamicResource language}" /> 8 </StackPanel> 9
<Language.xaml.cs>
C#
1 2 private void RadioButtonENG_Checked(object sender, RoutedEventArgs e) 3 { 4 ApplicationSetting.NowLanguage = "en-US"; 5 } 6 7 private void RadioButtonJPA_Checked(object sender, RoutedEventArgs e) 8 { 9 ApplicationSetting.NowLanguage = "ja-JP"; 10 } 11 12 private void OK_Click(object sender, RoutedEventArgs e) 13 { 14 SetLanguage(ApplicationSetting.NowLanguage); 15 } 16 17 private void SetLanguage(string cultureCode) 18 { 19 var dictionary = new ResourceDictionary(); 20 dictionary.Source = new Uri(@"/AppResources;component/Resources/Language/StringResource." + cultureCode + @".xaml", UriKind.Relative); 21 this.Resources.MergedDictionaries.Add(dictionary);//←この部分 22 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/19 12:42
2019/11/19 14:15
2019/11/19 14:25
2019/11/20 02:17
2019/11/20 02:56
2019/11/20 03:30
2019/11/20 04:45
2019/11/20 08:02
2019/11/29 08:01