所以我有这个MenuItem
使用CultureInfo
s列表作为itemsource。
我要做的是在CultureInfo
单击/选择 a 时触发一个函数,这应该将应用程序的本地化更改为所选的文化信息。我可以肯定地说该功能正在正常工作。在研究并尝试了几个例子之后,这就是我最终得到的结果,不幸的是它不起作用:
<MenuItem Header="{lex:LocText MenuLanguages}" ItemsSource="{Binding LanguageList}" DisplayMemberPath="Name">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Command" Value="{Binding SetLanguage}" />
<Setter Property="MenuItem.CommandParameter" Value="{Binding}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
命令:
private ICommand _SetLanguage;
public ICommand SetLanguage
{
get
{
if (_SetLanguage == null)
_SetLanguage = new RelayCommand(ChangeLanguage);
return _SetLanguage;
}
}
public void ChangeLanguage(object langChosen)
{
LocalizeDictionary.Instance.Culture = CultureInfo.GetCultureInfo(langChosen.ToString());
}
CultureInfo.GetCultureInfo()
将字符串作为参数。
itemsource 基本上是一个ObservableCollection<CultureInfo>
.
我的问题是上面的代码有什么问题?我一直在尝试很多“解决方案”,但都没有真正奏效......
当我从列表中选择一个项目时,什么也没有发生。
*我还尝试在该ChangeLanguage
方法上设置断点,这使我得出结论,该方法甚至永远不会触发。
使用caliburn.micro
和WPFLocalizationExtension
扩展。