以下代码将GradientStop
绑定到Background.Color
的{{1}}属性。一切正常,但我在输出窗口中收到绑定错误:
System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径= Background.Color;的DataItem = NULL; target元素是'GradientStop'(HashCode = 6944299); target属性为'Color'(类型'Color')
TemplatedParent
答案 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}}">