내 응용 프로그램은 여러 언어를 지원해야하며 런타임에 언어를 전환 할 수 있어야합니다. 그 목적을 위해 나는 LocalplexExtension을 codeplex (http://wpflocalizeextension.codeplex.com/)에서 사용하고 있습니다. 저는 응용 프로그램에서 Ribbon Contorl을 사용하고 있습니다. 내가 리본 리소스로 ribbonCommands를 만들고 LableTitle 및 기타 속성 withLocalizationExtension 클래스를 바인딩하고 있습니다.코드 플렉스에서 LocalizationExtension을 사용하여 리본 컨트롤에서 지역화를 적용하는 해결 방법
<MvvmCore:RibbonCommandExtended x:Key="SwitchLanguageCommand"
CanExecute="RibbonCommandExtended_CanExecute"
Executed="RibbonCommandExtended_Executed"
LabelTitle="{lex:LocText Key=SwitchLanguage,Dict=LanRes}"
ToolTipTitle="{lex:LocText Key=SwitchLanguage,Dict=LanRes}"
LargeImageSource="{lex:LocImage Key=ChangeLanguage,Dict=LanRes}"/>
그런 다음 버튼 속성을 정적 리소스로 지정합니다.
<rb:RibbonButton x:Name="EnglishButton" Command="{StaticResource SwitchToEnglishCommand}" Click="EnglishButton_Click">
다음은 내 RibbonCommandExtended 클래스입니다.
public class RibbonCommandExtended : RibbonCommand
{
private ICommand m_command;
public ICommand Command
{
get { return m_command; }
set
{
m_command = value;
if (m_command != null)
{
this.CanExecute += UsCanExecute;
this.Executed += UsExecuted;
}
else
{
this.CanExecute -= UsCanExecute;
this.Executed -= UsExecuted;
}
}
}
private void UsExecuted(object sender, ExecutedRoutedEventArgs e)
{
Command.Execute(e.Parameter);
}
private void UsCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = Command.CanExecute(e.Parameter);
}
}
내 프로그램이 시작되면 리본 컨트롤이 올바른 언어 문자열과 이미지를 선택합니다. 하지만 런타임에 언어를 변경하면 리본 컨트롤의 텍스트와 이미지가 변경된 것을 볼 수 없습니다. RibbonCommand의 LabelTitle, LargeImageSource 및 기타 모든 속성은 종속성 속성이 아니기 때문에
누군가 이미 문제를 해결 했습니까? 아니면 내 요구 사항을 충족 시키도록 내 응용 프로그램을 지역화하기 위해 LocalizationExtension이 아닌 다른 방법이 있습니까?