Рассмотрим преобразователь значений ниже. Я могу легко передать такие значения, как «Красный» и «Зеленый», в мой конвертер, но как я могу передать кисть, определенную в 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
Lol ... если я поместил свой ресурс кисти над декларацией конвертера, это сработает! – l33t