错误将ImageSource绑定到ImageBrush

时间:2014-03-24 08:38:26

标签: c# wpf binding

我有一个名为MyUser的课程。它包含一个公共财产" Image"如下

private ImageSource _Image;

public ImageSource Image
{
    get { return _Image; }
    set
    {
        if (value != _Image)
        {
            _Image = value;
            OnPropertyChanged("Image");
        }
    }
}

我有一个WPF UserControl,其中包含一个setter,用于填充该用户图像的路径。 (用户是ViewModel中的MyUser对象)

<Setter Property="Fill">
    <Setter.Value>
        <ImageBrush ImageSource="{Binding Path=User.Image}"
                    Stretch="UniformToFill" />
    </Setter.Value>
</Setter>

我在运行时遇到错误(不是例外)

  

System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径= User.Image;的DataItem = NULL;目标元素是&#39; ImageBrush&#39; (的HashCode = 21084988);目标属性是&#39; ImageSource&#39; (键入&#39; ImageSource&#39;)

图像显示完美。为什么我收到此错误?这是我应该关注的事情吗?

感谢您的帮助! 沫

2 个答案:

答案 0 :(得分:1)

请阅读similar error message的答案。微软表示它是WPF中的一个小错误,但不值得被关注,因为它不会影响运行时行为。

答案 1 :(得分:0)

我收到类似的消息后。我的问题是,WPF无法确定一个 FrameworkElement来继承DataContext,它属于Visual或逻辑树。我将其解释为假定FrameworkElement中的第一个VisualTree。所以我认为这个消息应该是这种行为的暗示。

在这些术语中,您应该检查您的容器或用户控件或您使用的是否属于可视/逻辑树。

否则,您可以尝试通过ElementName=...RelativeSource={RelativeSource FindAncestor, AncestorType=...}明确指定DataContext。

但你有没有试过诊断这个绑定?使用命名空间xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"并将, diag:PresentationTraceSources.TraceLevel=High添加到绑定中,您应该能够确定那里发生了什么。