2012-12-27 20 views
6

Ben bir TextBlock var:Metin özelliğine zaten Bağlama içeren bir TextBlock'a düzenli metin nasıl eklenir?

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

Ve gördüğünüz gibi, başka öğenin seçili öğeye bağlıdır. Şimdi, örneğin, seçilen öğenin "Merhaba" yazdığını varsayalım. Ve ismimi ona eklemek istiyorum (XAML'de, arkaplanda değil), böylece şöyle okur: "Merhaba, Ok". Bunu nasıl yapabilirim?

cevap

3

Bu yapılandırmada yapabileceğiniz tek şey, seçilen öğede bu metne sahip olmasıdır.

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

Bu yapılandırmayla istediğiniz suffixText herhangi bir şekilde sağlamak ve aradığınız sonuçlar alabilirsiniz: Peki, ne öneriyoruz bu satırlar boyunca daha bir şeydir.

0

İki dizeyi birleştiren bunun için bir MultiValueConverter oluşturmanız gerekir. Bu dizeleri xaml'den dönüştürücüye geçirebilirsiniz. Metro XAML üzerinde henüz mevcut

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

XAML çözümleri değil: daha fazla detay article

10

bu deneyin bakın

Sen StringFormat kullanabilirsiniz:

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

Ayrıca MultiBinding ve StringFormat kullanabilirsiniz :

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

StringFormat'a gelince: 'Özellik 'StringFormat', Binding türünde bulunamadı.' Ve MultiBinding, bir Windows Metro tarzı projesinde desteklenmiyor. ' – Arrow

+4

@Arrow haklısınız. İlk çözümümü Run ile dene. – kmatyaszek

+3

A 'TextBlock' ile çoklu' Run's kesinlikle bunun için bir yoldur. –

İlgili konular