我们可以在绑定表达式中连接两个属性吗?如果可能的话,不用转换器或者不用写两个文本块并分别设置它们?
mrwjdhj31#
如果你想在一个TextBlock中显示FirstName和LastName,那么你可以这样做:
TextBlock
FirstName
LastName
<TextBlock> <Run Text="{Binding FirstName}" /> <Run Text=" " /> <!-- space --> <Run Text="{Binding LastName}" /> </TextBlock>
现在,TextBlock的Text属性将为"Sachin Tendulkar",并在以下情况下显示:
Text
"Sachin Tendulkar"
FirstName = Sachin LastName = Tendulkar
qlzsbp2j2#
<TextBlock.Text> <MultiBinding StringFormat="{}{0} , {1}"> <Binding Path="data1" /> <Binding Path="data2" /> </MultiBinding> </TextBlock.Text>
数据1和数据2是被绑定的字符串属性。
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; } }
bqujaahr4#
在MultiBinding和StringFormat的帮助下,这在WPF中是可能的。但不幸的是,在Silverlight中不是。
wqlqzqxt5#
如果你需要添加任何字符串,那就试试吧。这里我在windows phone中绑定文本后添加“%”。
<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
qpgpyjmq6#
您可以使用执行串联的getter添加新属性。假设您有FirstName和LastName属性,则可以定义Name属性,如下所示:
Name
public string Name { get { return FirstName + " " + LastName; } }
这将很好地工作,但是你应该知道你不能对只读属性进行双向绑定,而且你可能想在源属性的setter中实现连接属性的属性更改通知。
6条答案
按热度按时间mrwjdhj31#
如果你想在一个
TextBlock
中显示FirstName
和LastName
,那么你可以这样做:现在,TextBlock的
Text
属性将为"Sachin Tendulkar"
,并在以下情况下显示:qlzsbp2j2#
数据1和数据2是被绑定的字符串属性。
velaa5lx3#
就像alpha-mouse建议的那样,MultiBinding不会在开箱即用的情况下工作,但这个家伙已经把一些东西放在一起,可能会有所帮助:
http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx
如果这看起来有点不正常,那么 * 也许 * 可以尝试在对象上放置一个组合值属性作为绑定机制的助手,例如:
bqujaahr4#
在MultiBinding和StringFormat的帮助下,这在WPF中是可能的。但不幸的是,在Silverlight中不是。
wqlqzqxt5#
如果你需要添加任何字符串,那就试试吧。这里我在windows phone中绑定文本后添加“%”。
qpgpyjmq6#
您可以使用执行串联的getter添加新属性。
假设您有
FirstName
和LastName
属性,则可以定义Name
属性,如下所示:这将很好地工作,但是你应该知道你不能对只读属性进行双向绑定,而且你可能想在源属性的setter中实现连接属性的属性更改通知。