wpf - 绑定(bind)字符串格式

标签 wpf binding string-formatting

我有一组要显示的文本 block ,我需要每个文本 block 的文本以不同方式显示。我目前正在将格式字符串保存在标签属性中,并且需要以这种格式显示文本。如何绑定(bind) StringFormat 部分?

类似于下面的部分:
<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

最佳答案

由于BindingBase.StringFormat不是依赖属性,我不认为你可以绑定(bind)它。如果格式化字符串不同,恐怕你将不得不诉诸这样的事情

<TextBlock Text="{Binding MyFormattedProperty}" />

并在您的 View 模型中进行格式化。或者,您可以使用 MultiBinding和一个转换器(示例代码未经测试):
<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myStringFormatter}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

public class StringFormatter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format((string)values[1], values[0]);
    }
    ...
}

关于wpf - 绑定(bind)字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010772/

相关文章:

c# - 多个列表框同时滚动?

wpf - 从另一个ViewModel引发MVVM属性的最佳方法是什么?

c# - WPF:带 Canvas 的图像

python - 如何在其他模块上下文中执行代码

c++ - 如何将 C++ 标准库链接到 Monotouch 应用程序

(s)printf 的 C++ 标准替代品

c# - WPF标签下的可点击按钮

c# - 父对象的 WPF 中的数据绑定(bind)

c - 修改rsp堆栈指针

当字符串包含 "%s"而没有转义时的 Python 字符串格式