绑定StringFormat

Mil*_*les 14 wpf binding string-formatting

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

类似下面的部分:

<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

Hei*_*nzi 21

既然BindingBase.StringFormat不是依赖属性,我认为你不能绑定它.如果格式化字符串不同,我担心你将不得不求助于这样的事情

<TextBlock Text="{Binding MyFormattedProperty}" />
Run Code Online (Sandbox Code Playgroud)

并在视图模型中进行格式化.或者,您可以使用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]);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)