Path vs PathGeometry dans DataTemplate
bonjour
je template ma ListBox alors plusieurs possibilités :
- faire la différence entre mes Items par leur Type et là j'utilise un TargetType
- utiliser un TemplateSelector..inconvénient il est appelé un seule fois au chargement, donc pas trop dynamique.
- comme la différence est dans la géométrie a dessiner j'utilise cette dernière méthode avec un seule DataTemplate mais en faisant un Binding sur Path qui est normalement un type Shape
mais j'ai utilisé dans ma geometrie en code behind un PathGeometry
ma question est : pourquoi un PathGeometry puise être accepté dans mon XAML au niveau du binding suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <DataTemplate x:Key="viewpath" >
<Canvas Name="itemcanvas" Background="Transparent"
PreviewMouseMove="itemcanvas_PreviewMouseMove"
PreviewMouseLeftButtonDown="itemcanvas_PreviewMouseLeftButtonDown"
PreviewMouseLeftButtonUp="itemcanvas_PreviewMouseLeftButtonUp" >
<Path x:Name="pathnode" Stroke="Green" Fill="Black" Data="{Binding Path=geoview1.geometryform, Mode=TwoWay}"></Path>
</Canvas>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="pathnode" Property="Fill" Value="red"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate> |
sa me dessine deux triangles comme il faut, il y a même mon Trigger qui fonctionne normalement.
ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public class GeomView : INotifyPropertyChanged
{
//......
public PathGeometry geometryform
{
get { return this._geometryform; }
set
{
if (value != this._geometryform)
{
this._geometryform = value;
OnPropertyChanged(nameof(this.geometryform));
}
}
}
} |