c# - 如何使用 XAML 中的资源值和绑定(bind)值格式化字符串?

标签 c# .net wpf windows xaml

我需要开发一个支持本地化的应用程序,因此我需要以这样一种方式格式化 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/

相关文章:

c# - 当 AutoCheck 属性在 C# 中设置为 false 时,手动选中和取消选中 RadioButton 的正确方法是什么?

wpf - 根据当前主题更改控制模板

c# - DB 中的 System.Web.UI.WebControls.TextBox

C# DataGridViewCheckBoxColumn 隐藏/灰显

javascript - 当我尝试在 JavaScript 中使用模型时模型为空

c# - 如何一次刷新 .net 配置的所有部分或如何遍历它们?

.net - 需要一个从 Midi 生成 WAVE 的库

mysql - 为什么 WPF 忽略我的 CultureInfo.CurrentCulture

c# - 带 ICommand 和 OnPropertyChanged 的​​ WPF 控件可见性

C# PKCS7 智能卡数字签名 - 文档自签名以来已被更改或损坏