2009-12-07 103 views
8

单个绑定,我们使用:使用带有多个绑定的StringFormat进行多重绑定的较短的xaml语法是什么?

<TextBlock> 
    <TextBlock.Text> 
    <MultiBinding StringFormat="{}{0}"> 
     <Binding Path=EmployeeName/> 
    </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

或者更短的语法:

<TextBlock 
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/> 

现在,如果你有multibinding:

<TextBlock> 
    <TextBlock.Text> 
    <MultiBinding StringFormat="{}{0}, {2}"> 
     <Binding Path="EmployeeName"/> 
     <Binding Path="Age"/> 
    </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

我想知道,什么是它的语法较短?

<TextBlock 
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/> 

回答

5

根据MSDN,你的第二个例子( “使用MultiBinding与单一绑定短语法”)不应该工作,无论是在.net 3.5也不.net 4.0

注:

MultiBinding和PriorityBinding不支持XAML扩展语法(尽管共享相同的BindingBase类,它实际上实现了Binding的XAML行为)。

所以,如果它对你有效,那是偶然的,而且它不受支持的行为。


PS:你并不需要使用MultiBinding为结合。以下就足够了:

<TextBlock> 
    <TextBlock.Text> 
     <Binding Path="EmployeeName" /> 
    </TextBlock.Text> 
</TextBlock> 

<TextBlock Text="{Binding Path=EmployeeName}"/> 

,甚至更短的

<TextBlock Text="{Binding EmployeeName}"/> 
+0

是的,它可能是一个非预期的行为。我介绍的短语法是在粘贴WPF元素时由Visual Studio 2008生成的。由于我没有对它进行编码,所以我在考虑是否可以为多个绑定路径做这个更短的版本。谢谢Heinzi! – 2009-12-07 17:09:06