wpf 我们可以在数据绑定中连接两个属性吗?

zvms9eto  于 2022-12-27  发布在  其他
关注(0)|答案(6)|浏览(208)

我们可以在绑定表达式中连接两个属性吗?如果可能的话,不用转换器或者不用写两个文本块并分别设置它们?

mrwjdhj3

mrwjdhj31#

如果你想在一个TextBlock中显示FirstNameLastName,那么你可以这样做:

<TextBlock>
     <Run Text="{Binding FirstName}" />
     <Run Text="   " /> <!-- space -->
     <Run Text="{Binding LastName}" />
</TextBlock>

现在,TextBlock的Text属性将为"Sachin Tendulkar",并在以下情况下显示:

FirstName = Sachin
LastName  = Tendulkar
qlzsbp2j

qlzsbp2j2#

<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} , {1}">
     <Binding Path="data1" />
     <Binding Path="data2" />
    </MultiBinding>
</TextBlock.Text>

数据1和数据2是被绑定的字符串属性。

velaa5lx

velaa5lx3#

就像alpha-mouse建议的那样,MultiBinding不会在开箱即用的情况下工作,但这个家伙已经把一些东西放在一起,可能会有所帮助:
http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx
如果这看起来有点不正常,那么 * 也许 * 可以尝试在对象上放置一个组合值属性作为绑定机制的助手,例如:

public string FullName {
   get { return this.FirstName + " " + this.LastName; }
}
bqujaahr

bqujaahr4#

MultiBinding和StringFormat的帮助下,这在WPF中是可能的。但不幸的是,在Silverlight中不是。

wqlqzqxt

wqlqzqxt5#

如果你需要添加任何字符串,那就试试吧。这里我在windows phone中绑定文本后添加“%”。

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
qpgpyjmq

qpgpyjmq6#

您可以使用执行串联的getter添加新属性。
假设您有FirstNameLastName属性,则可以定义Name属性,如下所示:

public string Name { get { return FirstName + " " + LastName; } }

这将很好地工作,但是你应该知道你不能对只读属性进行双向绑定,而且你可能想在源属性的setter中实现连接属性的属性更改通知。

相关问题