У меня есть ItemsControl
, который отображает группу прямоугольников. Каждый прямоугольник должен быть смещен вверх и влево. Итак, я создал RectangleStyle
, который использует привязки, чтобы установить ширину, высоту, X-перевод и Y-перевод для прямоугольника.
Привязки ширины и высоты работают нормально, но я получаю следующую ошибку для привязок TranslateTransform
:
System.Windows.Data Ошибка: 2: не удается найти управляющий FrameworkElement или FrameworkContentElement для целевого элемента. BindingExpression: Path = offset.x; DataItem = NULL; Целевым элементом является TranslateTransform (HashCode = 16452547); целевое свойство 'X' (тип 'Double')
Вот определение моего 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
установщика RectangleStyle
, но я не уверен, что нужно сделать, чтобы решить эту проблему. Интересно, что графика переводится должным образом, поэтому WPF может разрешать привязки - просто по какой-то причине им это не нравится.
Что я могу сделать, чтобы исправить привязки?
Редактировать
Я отправил сообщение об ошибке в MS Connect:
https://connect.microsoft.com/VisualStudio/feedback/details/746840/misleading-cannot-find-governing-frameworkelement-error-message-appears-in-output-window