2012-12-27 2 views
6

Ich habe einen Textblock:Wie man normalen Text an einen TextBlock anfügt, der bereits eine Bindung an seine Texteigenschaft hat?

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem.Name, Mode=TwoWay}" /> 

Und wie Sie sehen können, ist es mit einem anderen Element des ausgewählten Elements gebunden. Nun sagen wir zum Beispiel, dass das ausgewählte Element "Hallo" sagt. Und ich möchte meinen Namen anhängen (in XAML, nicht Code-behind), so dass es wie folgt lautet: "Hallo, Pfeil.". Wie kann ich das machen?

Antwort

3

Mit dieser Konfiguration können Sie nur den Text im ausgewählten Element speichern. Also, was ich würde empfehlen, etwas mehr in diese Richtung:

<StackPanel Orientation="Horizontal"> 
    <TextBlock x:Name="someText" 
     Text="{Binding ElementName=theList, 
         Path=SelectedItem.Name, 
         Mode=TwoWay}" /> 
    <TextBlock x:Name="suffixText"/> 
</StackPanel> 

Mit dieser Konfiguration Sie die suffixText jede mögliche Weise bereitstellen können Sie wollen und bekommen die Ergebnisse, die Sie suchen.

0

Sie müssen für diesen einen MultiValueConverter erstellen, der zwei Strings verkettet. Sie können diese Zeichenfolgen von Xaml an Konverter übergeben. Weitere Details finden Sie article

10

Try this:

<TextBlock x:Name="someText" TextWrapping="NoWrap">    
    <Run Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay}" /> 
    <Run Text=" Arrow." /> 
</TextBlock> 

XAML-Lösungen noch nicht vorhanden auf Metro XAML:

Sie StringFormat verwenden können:

<TextBlock x:Name="someText" Text="{Binding ElementName=theList, Path=SelectedItem, Mode=TwoWay, StringFormat={}{0} Arrow.}" /> 

Sie können auch Multibinding verwenden und StringFormat :

<TextBlock> 
    <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} Arrow."> 
       <Binding ElementName="theList" Path="SelectedItem.Name" />      
      </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
+1

Wie für StringFormat: 'Die Eigenschaft 'StringFormat' wurde nicht im Typ Bindung gefunden. Und' MultiBinding wird in einem Windows-Metro-Stil-Projekt nicht unterstützt.' – Arrow

+4

@Arrow Sie haben Recht. Versuche meine erste Lösung mit Run. – kmatyaszek

+3

Ein 'TextBlock' mit mehreren' Run's ist definitiv der richtige Weg dafür. –

Verwandte Themen