如何在WinUI3应用运行时切换显示语言?
WinUI3 运行时切换显示语言实现
完整代码实现
MainWindow.xaml(保持你现有代码即可)
<ComboBox x:Name="LanguangeMode" SelectionChanged="Language_SelectionChanged"> <ComboBoxItem Content="English"/> <ComboBoxItem Content="Simplified Chinese"/> </ComboBox>
MainWindow.xaml.cs(补充切换逻辑)
using System.Globalization; using Windows.Globalization; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; private void Language_SelectionChanged(object sender, SelectionChangedEventArgs e) { var comboBox = sender as ComboBox; if (comboBox == null) return; CultureInfo targetCulture = comboBox.SelectedIndex switch { 0 => new CultureInfo("en-US"), 1 => new CultureInfo("zh-CN"), _ => CultureInfo.CurrentUICulture }; // 配置应用语言 CultureInfo.CurrentUICulture = targetCulture; ApplicationLanguages.PrimaryLanguageOverride = targetCulture.Name; // 重启主窗口使语言变更生效 var currentWindow = Application.Current.Windows[0] as Window; if (currentWindow != null) { currentWindow.Content = new MainWindow(); currentWindow.Activate(); } }
关键说明
- 资源文件规范:确保你的多语言资源文件命名正确,默认英文用
Resources.resw,简体中文用Resources.zh-CN.resw,所有需要翻译的文本都绑定到资源文件对应的键。 - 语言生效逻辑:WinUI3不会自动刷新现有控件的资源绑定,重启窗口是最直接可靠的生效方式;如果不想重启窗口,需手动遍历所有控件更新绑定,操作复杂度高且容易遗漏。
内容的提问来源于stack exchange,提问作者unsealed1051
相关产品推荐
相关产品推荐

