我目前正在开发.NET Framework 4.7.1 WPF应用程序。我需要使用标准的 .resx 文件在 TextBlock 元素中本地化字符串。
问题是,在我的TextBlock中,我使用了动态资源,该资源由文本和递增的数字(计数器)组成。
<TextBlock Text="{Binding LoadingPercent, StringFormat=Loading the app...{0:N0}%}" />
您知道如何在XAML中本地化“正在加载应用程序...”文本吗?
非常感谢您!
答案 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>