2009-09-05 48 views
0

我真的很想能夠對我綁定的東西進行一些操作。類似於能夠在ASP.Net中的<%#%>標記中調用String.Format()。在WPF綁定中,我如何操作綁定的數據,比如說連接兩個字符串?

例如,假設這是我的裝訂類型:

class User { 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 

,這是我將它綁定到Label(我知道這不會工作):

<Label Name="someLabel" Content="{Binding LastName+,+FirstName+ +Age}")/> 

如果我想要的結果是:史密斯,約翰32

回答

7

Multibinding + StringFormat(3.5 sp1)!!!!!

<TextBlock> 
<TextBlock.Text> 
    <MultiBinding StringFormat="{0}, {1} {2}"> 
     <Binding Path="LastName"/> 
     <Binding Path="FirstName"/> 
     <Binding Path="Age"/> 
    </MultiBinding> 
</TextBlock.Text> 
</TextBlock> 
+0

您可能必須跳過括號......「{} {0},{1} {2}」 – Will 2009-09-05 15:16:18

+0

這樣可以更輕鬆(或至少更「自然」)到實施財產變更通知(又名'INotifyPropertyChanged') – 2009-09-05 18:38:32

+0

現在,這真的很酷!我不知道那件事。我真的很抱歉,我對這個問題進行了維護。我只是這樣做,因爲我認爲我自己回答了這個問題。這正是我想要做的。 – 2009-09-05 22:14:50

3

試試這個:

class User { 
    //... 
    public string NameAndAge 
    { 
     get 
     { 
     return string.Format("{0}, {1} {2}",LastName , FirstName , Age); 
     }; 
    } 
} 



<Label Name="someLabel" Content="{Binding NameAndAge}")/> 
+0

+1哎呀...這是一個好主意,我沒有想到這一點。 lol – 2009-09-05 14:11:46

+0

這就是SO的原因:) – 2009-09-05 14:19:36

0

我落得這樣做的:

<TextBlock> 
    <TextBlock Text="{Binding LastName}"/><Run>,</Run> 
    <TextBlock Text="{Binding FirstName}"/> 
    <TextBlock Text="{Binding Age}"/> 
</TextBlock> 

想我會離開這個答案在這裏的人有跟我一樣的問題。

我仍然很好奇,看看有沒有人知道更聰明的方式來完成這一點,因爲這似乎有點狡猾。