J'ai un ItemsControl
qui affiche un groupe de rectangles. Chaque rectangle doit être décalé vers le haut et vers la gauche. J'ai donc créé un RectangleStyle
qui utilise des liaisons pour définir la largeur, la hauteur, la translation X et la translation Y pour un rectangle.La liaison dans le style WPF provoque une erreur inexplicable "Impossible de trouver l'élément FrameworkElement"
La largeur et la hauteur des liaisons fonctionnent très bien, mais je me fais l'erreur suivante pour les liaisons TranslateTransform
:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Offset.X; DataItem=null; target element is 'TranslateTransform' (HashCode=16452547); target property is 'X' (type 'Double')
Voici la définition de mon ItemControl
:
<ItemsControl
Style="{StaticResource ItemsControlStyle}"
ItemsSource="{Binding Zones}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Style="{StaticResource RectangleStyle}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Voici la définition de 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>
Et voici la définition de 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>
Les deux fixations dans le poseur RenderTransform
de RectangleStyle
sont la cause de l'erreur, mais je ne suis pas sûr de ce qu'il faut faire pour résoudre le problème. Fait intéressant, les graphiques sont étant traduit correctement, donc WPF est capable de résoudre les liaisons - ce n'est pas content pour eux pour une raison quelconque.
Que puis-je faire pour réparer les liaisons?
Modifier
J'ai présenté un rapport de bogue sur MS Connect:
Eh bien, il est facile à dupliquer. J'ai essayé environ 10 choses différentes, mais avec les liaisons fonctionnent bien, je me demande si vous devez vous connecter sur MS Connect et laissez-les se demander si c'est un bug. –
On dirait que le lien du rapport de bogue est modifié ou n'est plus public. Vous vous demandez la résolution de cela depuis l'ajout de x: Name ne fait rien pour moi. –