2009-12-07 9 views
8

dla pojedynczego wiązania, używamy:Jaka jest krótsza składnia xaml dla funkcji Multibinding przy użyciu StringFormat z wieloma powiązaniami?

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

lub krótszy składnia:

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

Teraz, jeśli masz MultiBinding:

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

Zastanawiałem się, co byłoby jego krótsza składnia?

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

Odpowiedz

5

Zgodnie z MSDN, drugi przykład ("krótsza składnia użyciu MultiBinding z pojedynczym Binding") nie powinny pracować, ani w .net 3.5 ani w .net 4.0:

Uwaga:

MultiBinding i PriorityBinding nie obsługują składni rozszerzenia XAML (pomimo współdzielenia tej samej klasy BindingBase, która faktycznie implementuje zachowanie XAML dla Binding).

Tak więc, jeśli to działa dla ciebie, jest to przez przypadek i nie jest to obsługiwane zachowanie.


PS: Nie trzeba używać MultiBinding dla pojedynczego wiążącego. Poniższa powinno wystarczyć:

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

lub

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

lub nawet krócej

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

Tak, to może być non oczekiwane zachowanie. Krótsza składnia, którą przedstawiłem została wygenerowana przez Visual Studio 2008 podczas wklejania elementu WPF. Ponieważ nie zakodowałem tego, myślałem, czy możliwe jest wykonanie krótszej wersji dla wielu ścieżek wiążących. Dziękuję Heinzi! –

Powiązane problemy