2009-12-07 67 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