2012-12-27 5 views
6

は私が持っているのTextBlock:テキストプロパティへのバインディングを既に持っているTextBlockに通常のテキストを追加するには?

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

をそして、あなたが見ることができるように、それは他の要素の選択した項目にバインドされています。さて、たとえば、選択した項目に「こんにちは」と書かれているとしましょう。 XAMLではコードビハインドではなく、「Hello、Arrow」のように自分の名前を追加したいと考えています。これどうやってするの?

答えて

3

この設定では、選択したアイテムにそのテキストが表示されます。

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

この構成では、あなたが望むsuffixTextどのような方法を提供し、あなたが探している結果を得ることができます:だから、私がお勧めすることは、これらの線に沿ってより多くのものです。

0

このために2つの文字列を連結するMultiValueConverterを作成する必要があります。これらの文字列をxamlからconverterに渡すことができます。あなたはStringFormatを使用することができます

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

また、あなたは、MultiBindingのとStringFormatを使用することができます

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

メトロXAMLでまだXAMLソリューションを利用できません。詳細はこれを試してみてくださいarticle

10

を見ます:

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

StringFormatの場合: 'プロパティ' StringFormat 'がタイプBindingで見つかりませんでした。' MultiBindingはWindows Metroスタイルのプロジェクトではサポートされていません。 ' – Arrow

+4

@Arrowあなたは正しいです。 Runで私の最初の解決策を試してみてください。 – kmatyaszek

+3

複数の 'Run'sを持つ' TextBlock'は、これを行うための方法です。 –