Каков более короткий синтаксис xaml для мультипривязки с использованием StringFormat с несколькими привязками?
-
13-09-2019 - |
Вопрос
для одной привязки мы используем:
<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>
Мне было интересно, каков будет его более короткий синтаксис?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Решение
Согласно MSDN, ваш второй пример («более короткий синтаксис с использованием MultiBinding с одной привязкой») не должен работать, ни в .net 3.5 ни в .net 4.0:
Примечание:
MultiBinding и PriorityBinding не поддерживают синтаксис расширения XAML (несмотря на то, что они используют один и тот же класс BindingBase, который фактически реализует поведение XAML для привязки).
Итак, если у вас это работает, то это случайно и это не поддерживается.
ПС:Вам не нужно использовать MultiBinding для одинокий привязка.Следующего должно быть достаточно:
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
или
<TextBlock Text="{Binding Path=EmployeeName}"/>
или даже короче
<TextBlock Text="{Binding EmployeeName}"/>
Не связан с StackOverflow