2010-12-01 26 views
30

İki özelliği birlikte ciltleme ifadesinde birleştirebilir miyiz? Mümkünse çevirici olmadan veya iki textblock yazmadan ve bunları ayrı ayrı ayarlayarak mı?Veri bağlamada iki özellik yapabilir miyiz?

+0

http://stackoverflow.com/questions/541896/concatenate-strings-instead-of-using-a-stack-of-textblocks –

cevap

13

MultiBinding kutunun dışında çalışmaz önerir, ancak bu adam yardım edebileceğini birlikte bir şeyler atmış gibi Cilt mekanizması için bir yardımcı olarak da nesne üzerinde bir kombine değer özelliği koymayı deneyin:

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

' ', daha temiz bir XAML çözümdür (aşağıdaki diğer yanıtı inceleyin). – qJake

3

Sen birleştirme gerçekleştiren bir gaz giderici yeni bir özellik ekleyebilir.

FirstName ve LastName özelliklerinin olduğunu varsayalım. Bundan sonra aşağıdaki bir Name özellik tanımlamak mümkündür: Bu işe yarayacağı

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

, ama sen bir salt okunur özellik için bağlayıcı iki yönlü yapamaz bilmelidir. Ayrıca, kaynak özelliklerin ayarlayıcılarındaki birleştirilmiş özellik için özellik değişikliği bildirimini uygulamak isteyebilirsiniz. Eğer göstermek isterseniz

79

, o zaman böyle yapabiliriz, tek TextBlock içinde FirstName ve LastName, de ki:

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

Şimdi, TextBlock en Text mülkiyet "Sachin Tendulkar" olacak ve görüntülenen alınacaksa:

FirstName = Sachin 
LastName = Tendulkar 

Yardım budur.

+4

Tam olarak ihtiyacım olan şey. Teşekkürler! – MattAitchison

+0

Her Run ifadesindeki> öncesi/değeri unuttun. Aksi takdirde, bana çok yardımcı oldu! – swinefeaster

+1

Genius basittir! –

2

Herhangi bir dize eklemeniz gerekiyorsa, onu deneyin. Burada windows telefona metin bağladıktan sonra "%" ekleyin.

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/> 
8
<TextBlock.Text> 
    <MultiBinding StringFormat="{}{0} , {1}"> 
    <Binding Path="data1" /> 
    <Binding Path="data2" /> 
    </MultiBinding> 
</TextBlock.Text> 

veri1 ve veri2 binded edilir dize özellikleridir.

+2

Bu harika bir çözümdür, çünkü DataGrid.TextColumn' gibi daha karmaşık bileşenler için çalışacaktır. – Casper

İlgili konular