0
请考虑下面的值转换器。我可以轻松地将“红色”和“绿色”等值传递给我的转换器,但我怎么能通过XAML中定义的画笔?将静态资源传递给自定义System.Windows.Data.IValueConverter?
如何将FalseBrush
绑定到MyNiceBrush
?
<local:MyBrushConverter x:Key="BackgroundConverter" FalseBrush="Red" TrueBrush="Green" />
<LinearGradientBrush x:Key="MyNiceBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#4C7F00" />
<GradientStop Offset="1" Color="#A0B529" />
</LinearGradientBrush>
在XAML中,我在我的对象的属性绑定到该转换器:Background="{Binding MyClass.TrueOrFalseProperty, Converter={StaticResource BackgroundConverter} ...
这里是我的转换器:
public class MyBrushConverter : IValueConverter
{
public Brush FalseBrush { get; set; }
public Brush TrueBrush { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((bool)value)
return TrueBrush;
else
return FalseBrush;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
为什么你就不能使用'StaticResource'做到这一点? 'FalseBrush = {StaticResource MyNiceBrush}'。 – Zabavsky
我试过了,但我一直收到一个异常:“在'System.Windows.Markup.StaticResourceHolder'上提供值引发异常。” – l33t
大声笑...如果我把我的画笔资源放在转换器声明之上,它就起作用了! – l33t