2014-02-27 60 views
0

我結合使用Multibinding的StringFormat到一個TextBox兩個字符串。MultiBinding with StringFormat - 爲什麼內部轉換器中的targetType ==對象?

<TextBox> 
    <TextBox.Text> 
     <MultiBinding StringFormat="{}{0} {1} "> 
      <Binding Path="Foo" 
         Converter="{StaticResource someConverter}" 
         ConverterParameter="true" /> 
      <Binding Path="Bar" /> 
     </MultiBinding> 
    </TextBox.Text> 
</TextBox> 

在轉換器的TargetType的屬性將是對象:當我添加一個轉換器內綁定的一個,這樣我也注意到一些奇怪的事情。直接在Text屬性(不multibinding)使用相同的轉換器是

我不知道爲什麼是發生的事情,如果有讓轉換器的任何方式瞭解結合的類型(不知道的術語是正確這裏)。

的原因,我問的是,我通常檢查到/從轉換器類型和我回Binding.DoNothing如果有一個不匹配。

回答

2

當您在Text屬性使用someConverter直接的TargetType的字符串,因爲它是基於文本屬性的類型。但是,當你使用綁定轉換器放在裏面MultiBinding,有大約TargetType的,沒有信息對象默認情況下使用。

也許你很熟悉IMultiValueConverter,所以當你使用它時,TargetType的字符串如你預期。看一下例子波紋管:

<TextBox> 
    <TextBox.Text> 
    <MultiBinding StringFormat="{}{0} {1} " Converter="{StaticResource someMultiConverter}" ConverterParameter="true" > 
     <Binding Path="Foo" /> 
     <Binding Path="Bar" /> 
    </MultiBinding> 
    </TextBox.Text> 
</TextBox> 
+0

感謝您的回答!很明顯,內部綁定不是Text的直接子節點,而是MultiBinding的子節點,但是使用StringFormat我會假定它需要字符串。現在,你是在暗示是一個可接受的解決方法(不這麼挑剔的轉換器的類型驗證),但它需要複製現有轉換器(現在多值)爲同一任務。 – pangabiMC

相關問題