Каков более короткий синтаксис xaml для мультипривязки с использованием StringFormat с несколькими привязками?

StackOverflow https://stackoverflow.com/questions/1861009

Вопрос

для одной привязки мы используем:

<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}"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top