2012-04-11 52 views
0

當前正在使用一個Windows Phone(7.5)應用程序,其中一個頁面包含一個綁定到元素列表的ListBox。更改動態綁定列表中各個元素的文本顏色

<ListBox x:Name="MyListBox" 
    ItemsSource="{Binding Path=Listing}" 
    ItemTemplate="{StaticResource MyItemTemplate}" /> 

的DataTemplate中看起來像以下,其中「名稱」和「說明」是類「實體」的屬性:

<DataTemplate x:Key="WordTemplate"> 
    <ListBoxItem Tap="WordTapped">        
     <StackPanel Orientation="Vertical"> 
      <TextBlock Width="Auto" 
        Text="{Binding Name}" 
        FontSize="{StaticResource PhoneFontSizeLarge}" 
        VerticalAlignment="Top" 
        TextWrapping="Wrap" 
        Margin="12, 0, 12, 0" /> 
      <TextBlock Width="Auto" 
        Text="{Binding Description}" 
        Style="{StaticResource PhoneTextSmallStyle}" 
        VerticalAlignment="Top" 
        TextWrapping="Wrap"           
        Margin="12, 0, 12, 12" />    
     </StackPanel> 
    </ListBoxItem> 
</DataTemplate> 

是否有可能 - 根據名稱/說明的實際值 - 改變每個TextBlock的字體顏色?

回答

2

是,使用ValueConverter,你的名稱和描述轉換爲刷:

<phone:PhoneApplicationPage.Resources> 
     <Converters:TextToBrushConverter x:Key="yourConverter"/> 
    </phone:PhoneApplicationPage.Resources> 

    ... 
    <TextBlock Width="Auto" 
      Text="{Binding Name}" 
      ... 
      Foreground={Binding Name, Converter={StaticResource yourConverter}} /> 

轉換器:

public class TextToBrushConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if ((string)value == "XXX") 
     { 
      return new SolidColorBrush(Colors.Red); 
     } 

     return new SolidColorBrush(Colors.Green); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

按預期工作。謝謝。 – UnclePaul 2012-04-12 19:17:25

+0

很高興聽到這個,歡迎你:) – thumbmunkeys 2012-04-12 19:47:42

0

如果您在您的類中的屬性,這是一個刷機基礎上產生的名稱/說明標籤,並將其綁定到你的文本塊的前景財產,應該工作...

或者,如果您希望稍微多一些canny,並且不要爲你的Entity類添加屬性,你可以使用ValueConverter(http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx),讓我知道你是否想要一些代碼。

0

是的,你可以創建自己的綁定轉換器和在結合使用到前景。

相關問題