2011-12-04 17 views
19

Sto provando a visualizzare una stringa in XAML utilizzando il controllo Label. In seguito è il mio codice XAML:Formato stringa usando MultiBinding?

<Label Height="28" HorizontalAlignment="Left" Margin="233,68,0,0" Name="label13" VerticalAlignment="Top"> 
    <Label.Content> 
     <MultiBinding StringFormat="{}{0} x {1}"> 
       <Binding Path="Width" /> 
       <Binding Path="Height" /> 
     </MultiBinding> 
    </Label.Content> 

larghezza e l'altezza sono due proprietà della mia classe di film. Voglio che l'etichetta visualizzi: "Larghezza x Altezza" es. 800 x 640 Tuttavia il controllo dell'etichetta rimane vuoto. Qualsiasi aiuto è apprezzato. VOGLIO FARE QUESTO SENZA UTILIZZARE UN CONVERTITORE.


Ho modificato il mio xaml utilizzando un TextBlock anziché Label. Ma ancora non popolerà visualizzare l'uscita.

<TextBlock Height="28" HorizontalAlignment="Left" Margin="233,68,0,0" Name="label13" VerticalAlignment="Top"> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="{}{0} x {1}"> 
         <Binding Path="Width" /> 
         <Binding Path="Height" /> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
+1

Hai guardato questo? http://stackoverflow.com/questions/4010772/binding-stringformat –

+0

hai implementato l'interfaccia INotificationChanged per il tuo film di classe? il tuo legame è corretto? (guarda la finestra di output vs) – punker76

risposta

66

si sta tentando di associare una stringa a un oggetto. Ma StringFormat richiede che il suo target sia un tipo di stringa.

provare a mettere un TextBlock nel contenuto dell'etichetta e associare i dati ad esso

<StackPanel> 
    <Slider x:Name="sl1" Minimum="10" Maximum="100"/> 
    <Slider x:Name="sl2" Minimum="10" Maximum="100"/> 
    <Label x:Name="label13" Background="Yellow" Foreground="Black"> 
    <Label.Content> 
     <TextBlock> 
      <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} x {1} Test"> 
       <Binding ElementName="sl1" Path="Value" /> 
       <Binding ElementName="sl2" Path="Value" /> 
      </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </Label.Content> 
    </Label> 
</StackPanel> 

EDIT la classe film deve implementare l'interfaccia INotificationPropertyChanged e le tue due proprietà devono generare l'evento modificato struttura il proprty nomi!

spero che questo aiuti