2012-05-02 23 views
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(); 
    } 
} 
+0

为什么你就不能使用'StaticResource'做到这一点? 'FalseBrush = {StaticResource MyNiceBrush}'。 – Zabavsky

+0

我试过了,但我一直收到一个异常:“在'System.Windows.Markup.StaticResourceHolder'上提供值引发异常。” – l33t

+0

大声笑...如果我把我的画笔资源放在转换器声明之上,它就起作用了! – l33t

回答

1
<local:MyBrushConverter x:Key="BackgroundConverter" FalseBrush={StaticResource MyNiceBrush} TrueBrush="Green" /> 
相关问题