所以我有這MenuItem
這是使用CultureInfo
s列表作爲項目源。
我想要做的是在單擊/選擇CultureInfo
時觸發一個函數,這應該會將應用程序的本地化更改爲所選的cultureinfo。 我可以放心地說,該功能正在工作,因爲它應該。 研究和嘗試幾個例子後,這是我結束了,不幸的是不起作用:在WPF中使用MenuItem的命令
<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
擴展名。
Woahh謝謝!有用!你能解釋一下爲什麼'正常綁定'不起作用嗎?是否有其他控件的行爲相同? – Asaf
嘿,看看我的評論。我解釋了爲什麼這個綁定在你的情況下不起作用。 –