绑定GradientStop可以工作但报告错误

时间:2010-10-07 14:37:22

标签: wpf binding

以下代码将GradientStop绑定到Background.Color的{​​{1}}属性。一切正常,但我在输出窗口中收到绑定错误:

  

System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径= Background.Color;的DataItem = NULL; target元素是'GradientStop'(HashCode = 6944299); target属性为'Color'(类型'Color')

TemplatedParent

1 个答案:

答案 0 :(得分:1)

我在Visual Studio控制台输出中也有同样的错误。

报告了here

的可能解释和解决方法

基本上如果你使用一个返回LinearGradientBrush的转换器,你就不会收到错误

代码是这样的

[ValueConversion(typeof(System.Windows.Media.Color), typeof(LinearGradientBrush))]
class GradientConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var brush = new LinearGradientBrush();
        var color = (Color)value;
        brush.StartPoint = new Point(0.5, 0);
        brush.EndPoint = new Point(0.5, 1);

        brush.GradientStops.Add(new GradientStop(Colors.White, 0));
        brush.GradientStops.Add(new GradientStop((Color)value, 1));

        return brush;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

在XAML中

<Border BorderThickness="1" BorderBrush="{TemplateBinding Background}" Background="{Binding Path=Background.Color, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource gradConv}}">