我有一个TextBlock,我想根据条件动态设置前景。但我希望前景可以成为主题资源。
<TextBlock Text="{Binding Contact.DisplayName}" Foreground="{Binding Converter={StaticResource isNewConverter}}" ></TextBlock>
public class IsNewConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
IMessage message = value as IMessage;
if (message == null || message.IsNew == false) return null;
return SystemAccentColor; // where and how do I get the current SystemAccentColor brush?
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
答案 0 :(得分:2)
尝试一下:
return new SolidColorBrush(
(Color)Application.Current.Resources["SystemAccentColor"]);
您可能还可以在资源中创建某种“ SystemAccentBrush”并将其颜色设置为SystemAccentColor,这样就不必在每次调用转换器时都创建新的画笔对象。
您可能还需要像SystemControlForegroundAccentBrush
这样的几种系统画笔?因此,您可以这样做:
return (Brush)Application.Current
.Resources["SystemControlForegroundAccentBrush"];