2010-12-09 50 views
40

我想用的StringFormat來做些事情是這樣的:的StringFormat和Multibinding與標籤

<Label x:Name="myLabel"> 
    <Label.Content> 
     <Multibinding StringFormat="{}{0} - {1}"> 
      <Binding Path="Lib1" /> 
      <Binding Path="Lib2" /> 
     </MultiBinding> 
    </Label.Content> 
</Label> 

但是,它不工作,我得到這個錯誤,而不是:

MultiBinding失敗的原因它沒有有效的轉換器。 MultiBindingExpression:目標元素是'Label'(Name ='myLabel');目標屬性是'內容'(類型'對象')

有什麼辦法可以使這段代碼有效嗎?

回答

94

你不能綁定這個,因爲你試圖將一個字符串綁定到一個不能工作的對象,因爲StringFormat要求它的目標是一個字符串類型。

<Label x:Name="myLabel"> 
    <Label.Content> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding StringFormat="{}{0} - {1}"> 
        <Binding Path="Lib1" /> 
        <Binding Path="Lib2" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </Label.Content> 
</Label> 
+1

這正是我要說的,這篇文章也證實了這一點:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c60b90e6-8426-4c2b-a547-eaa92920862f – Tom 2010-12-09 14:30:19

3

對於那些想知道,你也可以把從Leom伯克的答案<Label.Content>標籤:您可以使用一個TextBlock代替(其中有一個Text屬性),或者把文本塊作爲標籤的孩子通過兩種解決這個。這節省了另外兩行代碼。像 「狐狸跳過{0}」。

<Label x:Name="myLabel"> 
    <TextBlock> 
     <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} - {1}"> 
       <Binding Path="Lib1" /> 
       <Binding Path="Lib2" /> 
      </MultiBinding> 
     </TextBlock.Text> 
    </TextBlock> 
</Label> 
0
<Label> 
    <AccessText> 
     <MultiBinding StringFormat="{x:Static properties:Resources.MyText}"> 
     <Binding Path="MyObj.MyProp" Mode="OneTime"/> 
     </MultiBinding> 
    </AccessText> 
</Label> 

哪裏Resources.MyText可以容納任何東西