我有一组要显示的文本块,并且我需要每个文本块的文本以不同的方式显示。我当前正在标记属性中保存格式字符串,并且需要以此格式显示文本。如何绑定 StringFormat 部分?
类似于下面的部分:
<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />
Since BindingBase.StringFormat
不是依赖属性,我认为您不能绑定它。如果格式字符串有所不同,恐怕您将不得不求助于这样的东西
<TextBlock Text="{Binding MyFormattedProperty}" />
并在视图模型中进行格式化。或者,您可以使用多重绑定 http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx和一个转换器(示例代码未经测试):
<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]);
}
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)