2009-12-07 26 views
8

単一の結合のために、私たちが使用する:複数のバインディングを持つStringFormatを使用したMultibindingの短いxaml構文は何ですか?

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

または短い構文:

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

、あなたが多している場合:

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

を私がどうなるか、思っていましたその短い構文? MSDNによると

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

答えて

5

、あなたの第二の例は、( "単一の結合でMultiBindingのを使って短い構文は").net 3.5にも.net 4.0でもない、動作しないでください。

注:

MultiBindingとPriorityBindingは、XAML拡張構文をサポートしていません(実際にBindingのXAML動作を実装する同じBindingBaseクラスを共有していますが)。

したがって、それはあなたのために働く、それは事故であり、それは動作をサポートしていません。


PS:あなたが結合単一ためMultiBindingのを使用する必要はありません。以下で十分です:

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

または

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

またはさらに短い

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

はい、それは非期待される動作である可能性があります。私が提示した短い構文は、WPF要素を貼り付けるときにVisual Studio 2008によって生成されました。私はそれをコード化しなかったので、複数のバインディング・パスに対してこの短いバージョンを実行できるかどうかを考えていました。ありがとう、Heinzi! –

関連する問題