你真的需要在代码隐藏中做吗?
首选的解决方案是将Foreground
属性绑定到 ViewModel 的 ForegroundColor 属性(如果您使用 MVVM)。
如果您不使用 MVVM 并且不想使用属性“污染”您的模型类Brush
,则可以将该属性绑定Foreground
到您的类中已有的属性(例如Name
or Age
)并使用 aConverter
使其成为 a 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();
}
}