none
WPF多語系切換方式請教 RRS feed

  • 問題

  • 我原本在使用WPF的多語系是使用動態切換的方式,

    在App.xaml中設定使用的語系xaml檔

            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Language\en-US.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>


    然後WPF視窗中的控制項作再綁定為xaml中設定的名稱

    <TextBlock Grid.Row="1" Text="{DynamicResource MenuItem_1}"/>

    最後靠cs中的方法來切換語系

            private void Button_Click(object sender, RoutedEventArgs e)
            {
                switch (targetView)
                {
                    case "LanguageChange":
                        if (chkLanguage)
                        {
                            LoadLanguageFile("Language/zh-TW.xaml");
                            chkLanguage = true;
                        }
                        else
                        {
                            LoadLanguageFile("Language/en-US.xaml");
                            chkLanguage = false;
                        }
                        break;
                }
            }
    
            //多國語系資源檔載入
            void LoadLanguageFile(string languagefileName)
            {
                Application.Current.Resources.MergedDictionaries[0] = new ResourceDictionary()
                {
                    Source = new Uri(languagefileName, UriKind.RelativeOrAbsolute)
                };
            }

    原本依靠這種方式, 在多國語系的切換都很OK.

    直到我因為美工需求使用了MahApps的套件. 使用後切換並無法動態改變.

    所以我想是否能改成更改當我按下切換語系後, 在我下次開啟程式時切換成我需要的語系, 而不用動態切換.

    是否有類似的指令呢?

    範例檔

    2021年9月29日 上午 02:00

解答