2013-01-11 83 views
0

我有一個listBox,顯然通過數據綁定填滿了列表項。正如你也可能會知道的是,你指定一個ListItem將會是什麼樣一個ListItem模板標籤,像這樣:在C#中設置listItem文本顏色代碼

<ListBox.ItemTemplate> 
    <TextBlock Name="lblName" Text="{Binding Name}" Foreground="black" /> 
</ListBox.ItemTemplate> 

注意,前景是黑色的listItems中Textbloxk ...

現在在我的C#代碼中,我想動態設置每個listItems Textblock Foreground,並將其添加到我想要的顏色中。如何引用一個特定的listItems文本塊並設置它的前景?

如果需要更多信息,請詢問!提前致謝!

回答

1

一個更好的,更容易的解決辦法是將屬性添加到您的類型的SolidColorBrush的項目,代表顏色,讓呼叫ID ForegroundColor和使用結合

​​
+0

絕對同意,這是去了解它是最好的辦法。如何爲SolidColorBrush變量設置屬性?例如,你發送給構造函數的是什麼?字符串可能像這樣:SolidColorBrush myBrush = new SolidColorBrush(「#FFFFFF」); ? – Tiwaz89

+1

使用'新的SolidColorBrush(Colors.White)'或者如果你想使用十六進制符號,看看http://coding.kulman.sk/converting-hex-color-to-solidcolorbrush/ –

+0

雖然答案是正確的,我認爲重要的是要注意,在Model類中添加Style屬性有時可能被認爲是不好的做法。 –

2

你真的需要做的是在代碼-背後?

首選的解決方案是將Foreground屬性綁定到ViewModel的ForegroundColor屬性(如果使用MVVM)。

如果不使用MVVM和不想「污染」你的模型類與Brush屬性,你可以在Foreground屬性綁定到你的班上你已經有一個屬性(如NameAge)和使用Converter,使之成爲Brush

<ListBox.ItemTemplate> 
    <TextBlock Name="lblName" Text="{Binding Name}" Foreground="{Binding Age, Converter={StaticResource AgeToColorConverter}}" /> 
</ListBox.ItemTemplate> 

和轉換器的代碼:

public class AgeToColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     // Your code that converts the value to a Brush 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
相關問題