【发布时间】:2011-03-12 01:07:27
【问题描述】:
我有一个ItemsControl,它显示了一堆矩形。每个矩形都需要向上和向左偏移。因此,我创建了一个RectangleStyle,它使用绑定来设置矩形的宽度、高度、X 平移和 Y 平移。
宽度和高度绑定工作正常,但TranslateTransform 绑定出现以下错误:
System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=偏移量.X;数据项=空;目标元素是“TranslateTransform”(HashCode=16452547);目标属性是“X”(类型“双”)
这是我ItemControl的定义:
<ItemsControl
Style="{StaticResource ItemsControlStyle}"
ItemsSource="{Binding Zones}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Style="{StaticResource RectangleStyle}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这里是ItemsControlStyle的定义:
<Style x:Key="ItemsControlStyle" TargetType="ItemsControl">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Point.X}" />
<Setter Property="Canvas.Top" Value="{Binding Point.Y}" />
</Style>
</Setter.Value>
</Setter>
</Style>
这里是RectangleStyle的定义:
<Style x:Key="RectangleStyle" TargetType="Rectangle">
<Setter Property="Width" Value="{Binding Size.Width}" />
<Setter Property="Height" Value="{Binding Size.Height}" />
<Setter Property="RenderTransform">
<Setter.Value>
<!-- these bindings are causing the error -->
<TranslateTransform X="{Binding Offset.X}" Y="{Binding Offset.Y}" />
</Setter.Value>
</Setter>
</Style>
RectangleStyle 的 RenderTransform 设置器中的两个绑定是导致错误的原因,但我不确定如何解决该问题。有趣的是,图形正在被正确翻译,因此 WPF 能够解析绑定——出于某种原因,它对它们不满意。
我可以做些什么来修复绑定?
编辑
我在 MS Connect 上提交了错误报告:
【问题讨论】:
-
嗯,很容易复制。我尝试了大约 10 种不同的方法,但绑定工作正常,我想知道您是否应该在 MS Connect 上记录这个并让他们怀疑这是否是一个错误。
-
错误报告链接似乎已更改或不再公开。想知道这个问题的解决方案,因为添加 x:Name 对我没有任何作用。
标签: wpf data-binding xaml binding