Domanda

per un singolo legame, usiamo:

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

o una sintassi più breve:

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

Ora, se si dispone di MultiBinding:

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

Mi chiedevo, quale sarebbe la sua sintassi più breve?

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

Soluzione

Secondo MSDN, il tuo secondo esempio ( "la sintassi più breve utilizzando MultiBinding con un singolo Binding") non dovrebbe funzionare, né in . net 3.5 né in net 4.0 :

  

Nota:

     

MultiBinding e PriorityBinding non supportano una sintassi estensione XAML (nonostante la condivisione della stessa classe BindingBase, che implementa in realtà il comportamento XAML per Binding).

Quindi, se funziona per voi, questo è per caso, e non è supportato comportamento.


PS: Non c'è bisogno di usare MultiBinding per un solo di legame. Il seguente dovrebbe essere sufficiente:

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

o

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

o anche più breve

<TextBlock Text="{Binding EmployeeName}"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top