【问题标题】:WPF Localization of dynamic string in TextBlockTextBlock中动态字符串的WPF本地化
【发布时间】:2019-04-02 08:46:28
【问题描述】:

我目前正在开发一个 .NET Framework 4.7.1 WPF 应用程序。我需要使用标准 .resx 文件本地化 TextBlock 元素中的字符串。

问题是,在我的 TextBlock 中,我使用了一个动态资源,由一个文本和一个递增的数字(计数器)组成。

<TextBlock Text="{Binding LoadingPercent, StringFormat=Loading the app...{0:N0}%}" />

您知道如何在 XAML 中本地化此文本“正在加载应用程序...”吗?

非常感谢!

【问题讨论】:

  • 我相信您也可以绑定 StringFormat,因此您可以将 StringFormat 绑定到一个属性并用正确的字符串填充它

标签: c# .net wpf localization


【解决方案1】:

仅本地化“正在加载应用程序...”并将 TextBlock 拆分为两个 Run 元素:

<TextBlock>
    <Run Text="{x:Static local:Resources.LoadingLabel}" />
    <Run Text="{Binding LoadingPercent, StringFormat=P0}" />
</TextBlock>

【讨论】:

    【解决方案2】:

    您必须将格式字符串部分移动到资源中,并将其与 MultiBinding 一起使用,如下所示:

     <TextBlock>
         <TextBlock.Text>
             <MultiBinding StringFormat="{x:Static local:Resource1.LoadTheAppFormated}">
                 <Binding Path="LoadingPercent"/>
             </MultiBinding>
         </TextBlock.Text>
     </TextBlock>
    

    编辑: 您的资源条目 Resource1.LoadTheAppFormated 当然应该包含整个格式化字符串“正在加载应用程序...{0:N0}%”。 对于本地化,您将需要额外的 *.en.resx (How to use localization in C#)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多