将ImageSource绑定到ImageBrush时出错
本文关键字:出错 ImageBrush ImageSource 绑定 | 更新日期: 2023-09-27 17:52:15
我有一个名为MyUser的类。它包含一个公共属性"Image",如下所示
private ImageSource _Image;
public ImageSource Image
{
get { return _Image; }
set
{
if (value != _Image)
{
_Image = value;
OnPropertyChanged("Image");
}
}
}
我有一个WPF UserControl,它包含一个setter,用于用该用户的图像填充路径。(User是来自ViewModel的MyUser对象)
<Setter Property="Fill">
<Setter.Value>
<ImageBrush ImageSource="{Binding Path=User.Image}"
Stretch="UniformToFill" />
</Setter.Value>
</Setter>
我在运行时得到一个错误(不是一个异常)
System.Windows。数据错误:2:找不到目标元素的框架元素或框架内容元素。BindingExpression:路径= User.Image;DataItem =零;目标元素是ImageBrush (HashCode=21084988);目标属性为'ImageSource'(类型为'ImageSource')
图像显示得非常好。为什么会出现这个错误?这是我该担心的吗?
谢谢你的帮助!莫
请阅读类似错误信息的答案。微软表示,这是WPF中的一个小bug,但不值得关注,因为它不会影响运行时行为。
有一次我收到了类似的消息。我的问题是,WPF无法确定一个 FrameworkElement
来继承DataContext
,它属于可视化树或逻辑树。我把它解释为假设VisualTree
中的第一个FrameworkElement
。所以我认为这条消息应该是对这种行为的一个提示。
在这些术语中,您应该检查您的容器或usercontrol或您正在使用的任何东西是否属于可视/逻辑树。
否则,您可以尝试通过ElementName=...
或RelativeSource={RelativeSource FindAncestor, AncestorType=...}
显式指定它来确定DataContext。
但是你试过诊断这种绑定吗?使用名称空间xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
并将, diag:PresentationTraceSources.TraceLevel=High
添加到绑定中,您应该能够确定那里发生了什么。