2012-05-02 2 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

Lol ... если я поместил свой ресурс кисти над декларацией конвертера, это сработает! – l33t

ответ

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