多Silverlight数据绑定

时间:2009-07-07 13:32:24

标签: c# silverlight binding

有没有人知道是否有可能在同一个属性上使用多个绑定在模板中进行绑定和(如果不是如何实现相同的效果)

即。 在表达式

中绑定了Text的文本块
"{Binding Path=Contact.Title} {Binding Path=Contact.Firstname} {Binding Path=Contact.Surname}"

所有文字属性

5 个答案:

答案 0 :(得分:6)

没什么大不了的:

<TextBlock>
<Run Text="{Binding Path=Contact.Title}"/>
<Run Text="{Binding Path=Contact.Firstname}"/>
<Run Text="{Binding Path=Contact.Surname}"/>
</TextBlock>  

答案 1 :(得分:4)

我遇到了类似的问题,这让我想到了Colin Eberhardt撰写的博客文章:

http://www.scottlogic.co.uk/blog/wpf/2009/06/silverlight-multibindings-how-to-attached-mutiple-bindings-to-a-single-property/

尽管我已经做了一些调整以适应我正在考虑的具体情况,但它的效果非常好,这对于获得多重绑定非常有用。

答案 2 :(得分:3)

AFAIK这是不可能的。

这是遵循MVVM模式的原因之一,创建一个以您实际想要呈现的格式反映数据的中间视图,因此您将在该类上创建一个fullname属性,该属性是这些字段的串联,然后绑定到那个。

答案 3 :(得分:1)

值转换器是绑定到多个值的一种解决方案: http://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight-databinding-valueconverter.aspx#11262

在该场景中,您将TextBlock的Text属性绑定到Contact对象,并指定您创建的自定义值转换器。转换器可以根据属性值执行字符串格式化。

答案 4 :(得分:1)

我认为不可能直接在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}}"/>

More Info On Converters