我遇到了一个绑定失败,但似乎并不是失败,因为绑定的一切都像预期的那样工作。我猜绑定失败了,但在成功后很快就会失败(但绑定失败警告不应该被删除吗?(。
绑定失败发生在我的自定义控件(ColoredImage(的一个模板(在样式中(中。但是,只有当该自定义控件在自定义控件的另一个模板(ComPortButton(中使用时,才会在该模板中出现绑定失败。当我在其他地方使用ColoredImage控件时,不会出现绑定失败。
错误读取:System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。BindingExpression:Path=Image;DataItem=null;目标元素是"ImageBrush"(哈希代码=42371273(;目标属性为"ImageSource"(类型为"ImageSource"(
当我从修改模板时
<Rectangle x:Name="Icon" Fill="{Binding Path=Color, RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}}" Width="{Binding Path=Width, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Top">
<Rectangle.OpacityMask>
<ImageBrush ImageSource="{Binding Path=Image, RelativeSource={RelativeSource TemplatedParent}}"/>
</Rectangle.OpacityMask>
至:
<Image Source="{Binding Path=Image, RelativeSource={RelativeSource TemplatedParent}}" x:Name="Icon" Height="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}}" Width="{Binding Path=Width, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Top"/>
然后我没有绑定失败,这很奇怪,因为使用了相同的绑定。作为提醒,使用此控件(coloredimage(不会在任何其他地方出现绑定失败。只有当我从另一个模板使用它时。
我该怎么解决这个问题?代码按预期工作,我只是厌倦了使用";绑定失败";图标一直亮红色。
ColoredImage和ComPortButton的Styles+模板都在Generic.xaml中。这与它有关吗?我尝试更改在Generic.xaml中定义这些样式的顺序,但没有效果。
我认为,您的问题与Image和ImageBrush类之间的差异有关。第一个继承自FrameworkElement类,但不是第二个。
RelativeSource TemplatedPrent的行为取决于模板容器,请参阅:TemplatedPrente备注。
FrameworkElement类包含绑定系统和visualTree使用的DataContext和TemplatedPrent属性。
WPF元素在层次结构上与LogicalTree和VisualTree两个树相关(看看WPF中的Logical Tree和Visual Tree(。
如果您的元素不是VisualTree的一部分,则会出现此错误。
有关模式的详细信息,请查看此响应WPF错误:找不到目标元素的管理FrameworkElement