我关注了这篇文章:使用自定义 MarkupExtension对我的应用进行国际化的 WPF 应用程序的本地化。
在我的 MainWindow.xaml 我有:
<Button x:Name="ServiceButton" Content="{l:Translate service.button.start}" Click="toggle_service_click" />
如您所见,翻译标记{l:Translate service.button.start}是为了在加载应用程序时在我当前的语言环境资源文件中检索字符串service.button.start,但如果服务已经启动,则标记字符串应该成为service.button.stop
所以,在实践中,当我运行我的应用程序时,如果服务启动:
<Button x:Name="ServiceButton" Content="{l:Translate service.button.stop}" Click="toggle_service_click" />
除此以外
<Button x:Name="ServiceButton" Content="{l:Translate service.button.start}" Click="toggle_service_click" />
在translationManager解析它之前,我如何直接在xaml文件中设置正确的标记“即时”?
编辑: 我试图将它绑定到我的 DataContext 中,如下所示: dataContext
public object ServiceTplString
{
get
{
var isr = ServiceHandler.Instance.serviceIsRunning("service_alias", "service_name");
return "{l:Translate service.button." + ( (isr) ? "stop" : "start" ) + "}";
}
}
MainApplication.xaml:
<Button x:Name="ServiceButton" Content="{Binding ServiceTplString}" Click="toggle_service_click" />
但不起作用..