有没有人知道是否可以在模板中使用多个绑定来绑定同一个属性(如果不行,如何实现相同的效果)?
比如,一个文本块具有在表达式中绑定的文本。
"{Binding Path=Contact.Title} {Binding Path=Contact.Firstname} {Binding Path=Contact.Surname}"
全能文本属性
有没有人知道是否可以在模板中使用多个绑定来绑定同一个属性(如果不行,如何实现相同的效果)?
比如,一个文本块具有在表达式中绑定的文本。
"{Binding Path=Contact.Title} {Binding Path=Contact.Firstname} {Binding Path=Contact.Surname}"
全能文本属性
没什么大问题,只需要:
<TextBlock>
<Run Text="{Binding Path=Contact.Title}"/>
<Run Text="{Binding Path=Contact.Firstname}"/>
<Run Text="{Binding Path=Contact.Surname}"/>
</TextBlock>
据我所知,这是不可能的。
这就是遵循MVVM模式的原因之一,创建一个中介视图来反映您实际想要呈现的数据格式,因此您可以在该类上创建一个fullname属性,该属性是这些字段的连接,然后绑定到该属性。
我认为在xaml中直接实现这个是不可能的。我非常希望能够将多个绑定绑定到一个属性上。
然而,我所学到的是,您可以使用几种不同的策略来实现类似于此的事情:
使用Stackpanel:
<StackPanel Orientation="Horizontal">
<TextBlock Text="Hello, "/>
<TextBlock Text="{Binding Contact.Title}"/>
<TextBlock Text="{Binding Contact.Firstname}"/>
<TextBlock Text="{Binding Contact.Surname}"/>
<TextBlock Text="!"/>
</StackPanel>
<TextBlock Text="{Binding Contact,
Converter={StaticResource ContactNameConverter}}"/>
值转换器是绑定到多个值的一种解决方案: http://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight-databinding-valueconverter.aspx#11262
在这种情况下,你可以将 TextBlock 的 Text 属性绑定到 Contact 对象,并指定一个自定义值转换器。转换器可以根据属性值执行字符串格式化。