У меня есть ItemsControl
, который отображает кучу прямоугольников. Каждый прямоугольник должен быть смещен вверх и влево. Итак, я создал RectangleStyle
, который использует привязки для установки ширины, высоты, X-перевода и перевода Y для прямоугольника.
Связи ширины и высоты работают нормально, но я получаю следующую ошибку для привязок TranslateTransform
:
Ошибка System.Windows.Data: 2: Не удается найти управляющий элемент FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = offset.x; DataItem = NULL; целевым элементом является "TranslateTransform" (HashCode = 16452547); target является "X" (тип "Double" )
Вот определение my 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>
Две привязки в RenderTransform
setter RectangleStyle
являются причиной ошибки, но я не уверен, что делать, чтобы исправить проблему. Интересно, что графика переводится правильно, поэтому WPF способен разрешать привязки - по некоторым причинам они просто не довольны.
Что я могу сделать, чтобы исправить привязки?
Edit
Я отправил отчет об ошибке в MS Connect: