如何使设计时文本在WPF的多语言应用程序中可见
本文关键字:语言 应用程序 WPF 何使 文本 | 更新日期: 2023-09-27 18:17:21
我有一个WPF应用程序,我使用资源文件使其多语言。
:
private void Application_Startup(object sender, StartupEventArgs e)
{
try
{
var lang = new Uri("pack://siteoforigin:,,,/Languages/" + Settings.Default.Language + ".xaml", UriKind.RelativeOrAbsolute);
this.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = lang });
}
catch
{
this.Resources.MergedDictionaries.Clear();
this.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("..''Languages''English.xaml", UriKind.RelativeOrAbsolute) });
}
}
那么,对于任何显示文本的标签,我这样设置它们:
<TextBlock Text="{DynamicResource DYouKnow}"/>
这在运行时工作得很好,但在设计时,我看不到标签上的默认文本,这使得设计/维护UI变得困难。
还有别的方法吗?
使用MarkupExtension,您可以创建一个可以在XAML中使用的扩展,该扩展也将提供设计时的文本。
你可以这样使用:
<TextBlock loc:TranslateExtension.Key="txtTextKey" Text="{loc:TranslateExtension Default='Default text'}" />
参见下面的教程:http://www.wpftutorial.net/localizemarkupextension.html
在InitializeComponent()
调用之后在View构造函数中尝试以下操作:
if (DesignerProperties.GetIsInDesignMode(this))
this.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("..''Languages''English.xaml", UriKind.RelativeOrAbsolute) })
. .将XAML URI调整为当前View文件的特定文件夹位置。