我有一个DropDown(使用MahApps,如果这很重要),我想用它在程序中“随时”切换语言。用编程方式更改语言/资源w/WPF
语言类
namespace SAM
{
public class Language
{
public string Title { get; set; }
public string Culture { get; set; }
}
}
更改语言
private void DropLanguage_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
Language lang = DropLanguage.SelectedItem as Language;
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang.Culture);
}
我有我的所有字符串作为资源Resources.resx
(默认)和Resources.en.resx
(英文)
3问题我不明白derstand
- 从下拉菜单中选择“englisch”时,语言不会立即改变,但当我点击某物时,否则,例如“关闭”(它询问“确定?”),语言已经改变。
- 直接位于.xaml文件(如
<TextBlock Text="{x:Static p:Resources.Config_HeaderBar_Find_Speaker}" />
)中的字符串根本不会被更新。 - 奖励:我将如何切换回默认语言,因为
new CultureInfo(lang.Culture);
需要一个参数,而对于默认的我有Culture = null
(因为Resources.resx没有名称)。更改文件Resources.default.resx
弄乱我的代码有很多...
如果有任何的问题,可能是固定的,我会非常感激......