如何使设计时文本在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变得困难。

还有别的方法吗?

如何使设计时文本在WPF的多语言应用程序中可见

使用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文件的特定文件夹位置。