Каков более короткий синтаксис xaml для Multibinding с использованием StringFormat с несколькими привязками? - PullRequest
8 голосов
/ 07 декабря 2009

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

<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 ??????}"/>

1 Ответ

5 голосов
/ 07 декабря 2009

Согласно MSDN, ваш второй пример («более короткий синтаксис с использованием MultiBinding с одной привязкой») не должен работать ни в .net 3.5 , ни в .net 4.0

Примечание:

MultiBinding и PriorityBinding не поддерживают синтаксис расширения XAML (несмотря на использование общего класса BindingBase, который фактически реализует поведение XAML для Binding).

Итак, если это работает для вас, это случайно, и это не поддерживается поведение.


PS: Вам не нужно использовать MultiBinding для привязки single . Следующего должно быть достаточно:

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

или

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

или даже короче

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