我需要开发一个支持本地化的应用程序,因此我需要以这样一种方式格式化 TextBlock
,即部分字符串从绑定(bind)中获取一个参数,部分从资源中获取。我是这样写的
<TextBlock Height="30" >
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} -- *Now only* {1:C}!">
<Binding Path="Description"/>
<Binding Path="Price"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
这个现在只有部分我需要从资源字符串中获取。该字符串在资源中,但我不知道如何以这种方式从字符串中获取。谁能帮帮我。
我知道使用转换器是一种解决方案,但我有很多这样的场景,因此我最终可能会使用多个转换器,这不是一个好主意。我相信使用 StringFormat
我可以实现它。但我遗漏了一些东西。
最佳答案
您可以添加对 Resources 命名空间的引用,然后将另一个 Binding 添加到您的 MultiBinding
示例(未经测试)
xmlns:p="clr-namespace:MyApplication.Properties"
<TextBlock Height="30" >
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} -- {2} {1:C}!">
<Binding Path="Description"/>
<Binding Path="Price"/>
<Binding Path="{x:Static p:Resources.Nowonly}"/>
<!-- Or possibly Source instaed of Path as mentioned by @dkozl -->
<Binding Source="{x:Static p:Resources.Nowonly}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
关于c# - 如何使用 XAML 中的资源值和绑定(bind)值格式化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26765979/