2009-12-07 13 views
8

, kullandığımız:Birden çok bağlama ile StringFormat kullanarak Çoklu Binding için daha kısa xaml sözdizimi nedir? Tek bir bağlanma için

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

veya daha kısa sözdizimi:

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

Şimdi, MultiBinding varsa:

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

, ne olurdu onun kısa sözdizimi? MSDN göre

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

cevap

5

, ikinci örnek ("tek Cilt ile MultiBinding kullanarak kısa sözdizimi") .net 3.5 ne de .net 4.0 yılında ne işe olmamalıdır:

Not:

MultiBinding ve PriorityBinding bir XAML uzantısı sözdizimini desteklemez (aslında BindingBase sınıfını paylaşmasına rağmen, aslında Bağlama için XAML davranışını uygular).

Bu, eğer sizin için işe yarıyorsa, bu kazayla ve desteklenen bir davranış değildir.


PS: Sen bağlayıcı bir tek için MultiBinding kullanmaya gerek yoktur. Aşağıdaki yeterli olacaktır:

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

veya

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

ya da kısa

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

Evet, bir sigara beklenen davranış olabilir. Sunulan kısa sözdizimi, bir WPF öğesi yapıştırırken Visual Studio 2008 tarafından oluşturuldu. Kodlamadığımdan beri, birden fazla ciltleme yolu için bu daha kısa versiyonu yapmanın mümkün olup olmadığını düşünüyordum. Teşekkür ederim Heinzi! –