WPF本地化TextBlock中的动态字符串

时间:2019-04-02 08:46:29

标签: c# .net wpf localization

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

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

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

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

非常感谢您!

2 个答案:

答案 0 :(得分: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#

答案 1 :(得分:2)

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

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