2011-08-20 63 views
16

我想補充文本綁定到文本塊中的結果:將文本添加到綁定的TextBlock

<TextBlock Text="{Binding Title}" Foreground="#FFC8AB14" FontSize="28" /> 

所顯示的文字是:

" My title " 

我想要什麼顯示的是:

This is "My title" 
+0

希望我已經說清楚了,而不是改變你的意圖。 –

+0

@Jeff Mercado Cheers,已經有一段時間了。希望這將是一個快速解決方案。我希望在{}之前添加另一個「」,但我錯了。 – Rhys

+0

所有爲了有更高質量的問題。 ;) –

回答

3

你好你可以寫爲:

<TextBlock> 
    <TextBlock>This is </TextBlock> 
    <TextBlock Text="{Binding Title}"></TextBlock> 
</TextBlock> 
2

你可以用轉換器做到這一點。

<TextBlock Text="{Binding Title, ConverterParameter=This is, Converter={StaticResource TextPrefixConverter}}" Foreground="#FFC8AB14" FontSize="28" /> 

轉換器只會將界限值作爲ConverterParameter的前綴。

public class TextPrefixConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    {       
     String result = String.Empty; 
     if (parameter != null) 
      result = parameter.ToString(); 

     if (value != null) 
      result += value.ToString(); 

     return result; 
    } 
... 
} 

空格和/或引號意圖成爲輸出的一部分並不明顯。如果是這樣,可以改變轉換器來修剪空間和/或向引用的字符串添加引號。

這樣做的另一種方法是:

<TextBlock Foreground="#FFC8AB14" FontSize="28" > 
    <Run Text="This is " /> 
    <Run Text="{Binding Path=Title}" />  
</TextBlock> 
6

如果你想這樣做的綁定:

<TextBlock Foreground="#FFC8AB14" FontSize="28"> 
    <TextBlock.Text> 
     <Binding Path="Title"> 
      <Binding.StringFormat> 
       This is "{0}" 
      </Binding.StringFormat> 
     </Binding> 
    </TextBlock.Text> 
</TextBlock> 

逃脫報價所需元素語法。如果行情在那裏只是爲了紀念插入的文本,不應該出現在輸出中這是很當然的簡單:出

<TextBlock Text="{Binding Title, StringFormat=This is {0}}"></TextBlock> 

檢查:

<TextBlock Text="{Binding Title, StringFormat={}This is {0}}" Foreground="#FFC8AB14" FontSize="28"> 
3

只是使用StringFormat進行格式化。

<TextBlock Text="{Binding Title,StringFormat='This is {0}'}" Foreground="#FFC8AB14" FontSize="28" /> 
0

這裏最好的辦法在性能方面,前面已經回答了,是用StringFormatBinding並將其分配到的TextBlockText財產。

但是如果性能是不是一個問題,和XAML的可讀性是首選,另一種方法是使用RunTextBlock

<TextBlock Foreground="#FFC8AB14" FontSize="28"> 
    This is <Run Text="{Binding Title}" /> 
</TextBlock> 

而且,這種方式可以應用不同的樣式(文本/背景顏色,斜體/粗體字體,字體大小等)到TextBlock的不同部分,這是BindingStringFormat所不能做到的。這種方法比具有不同文本/背景風格的多個TextBlock更高效。

相關問題