多个Silverlight数据绑定

4

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

比如,一个文本块具有在表达式中绑定的文本。

"{Binding Path=Contact.Title} {Binding Path=Contact.Firstname} {Binding Path=Contact.Surname}"

全能文本属性

4个回答

6

没什么大问题,只需要:

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

这在Silverlight 5中有效。原始问题可能是针对Silverlight 2或者3的。 - Randy Levy

3

据我所知,这是不可能的。

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


通过 Andrew 的解决方法是可行的,但我完全同意你的观点。只需在您的 ViewModel 中公开正确的属性(如果您正在遵循该模式),并删除对多绑定和任何转换器的要求即可。 - Ray Booysen

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}}"/>

转换器更多信息


1

这不太可行,因为当您绑定到特定字段时,在Contact对象中的这些字段值发生更改时,您将无法获得有针对性的更改通知。 - kpozin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接