그래서이 MenuItem
은 itemsource로 CultureInfo
의 목록을 사용하고 있습니다.
내가하고자하는 것은 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
확장자를 사용합니다.
감사합니다. 그것은 작동합니다! '정상 바인딩'이 작동하지 않는 이유를 조금 더 설명 할 수 있습니까? 같은 행동을하는 다른 컨트롤이 있습니까? – Asaf
이봐, 내 말 좀 봐. 나는 왜이 바인딩이 당신의 경우에 효과가 없었는지 설명했다. –