Pergunta

para a ligação de um único, usamos:

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

ou uma sintaxe mais curta:

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

Agora, se você tiver ligações múltiplas:

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

Eu estava pensando, o que seria o seu menor sintaxe?

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

Solução

De acordo com MSDN, o seu segundo exemplo ( "mais curto sintaxe usando MultiBinding com um único Binding") não devem trabalho, nem em . net 3,5 nem em net 4.0 :.

Nota:

MultiBinding e PriorityBinding não suportam uma sintaxe de extensão XAML (apesar de compartilhar a mesma classe BindingBase, o que realmente implementa o comportamento XAML para a ligação).

Então, se ele funciona para você, que é por acaso, e não é suportado comportamento.


PS: Você não precisa usar MultiBinding para um única obrigatório. O seguinte deve ser suficiente:

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

ou

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

ou até mesmo mais curto

<TextBlock Text="{Binding EmployeeName}"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top