Je travaille sur un jeu de société pour maîtriser WPF et je suis coincé après avoir essayé toute la nuit pour que cette partie fonctionne.WPF DataTrigger
Le code suivant appartient au contrôle utilisateur 'House' et fonctionne très bien sur le concepteur. Je peux sélectionner l'objet 'house' et modifier la propriété HouseType sur la grille de propriété et voir l'effet désiré. Mais en runtime, si je change la même propriété, rien ne se passe!
<DrawingBrush x:Key="emptyHouseBrush">
<DrawingBrush.Drawing>
<GeometryDrawing Geometry="M0,0 100,100 M0,100 100,0">
<GeometryDrawing.Pen>
<Pen Brush="Black" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
<DataTemplate DataType="{x:Type m:House}">
<Border x:Name="border" BorderThickness="2" >
<Grid x:Name="grid" >
</Grid>
</Border>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=HouseType}" Value="Neutral">
<Setter TargetName="border" Property="BorderBrush" Value="Black"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=HouseType}" Value="Forbidden">
<Setter TargetName="border" Property="BorderBrush" Value="Black"/>
<Setter TargetName="grid" Property="Background" Value="{StaticResource ResourceKey=emptyHouseBrush}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=HouseType}" Value="Borders">
<Setter TargetName="border" Property="BorderBrush" Value="#FF7A6D34"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=HouseType}" Value="Homeland">
<Setter TargetName="border" Property="BorderBrush" Value="#FFFFD200"/>
<Setter TargetName="border" Property="Background" Value="#54FBE681"/>
</DataTrigger>
<Trigger SourceName="border" Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="#645CAEF9"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Control.Resources>
<ContentControl>
<m:House x:Name="house" HouseType="Neutral"></m:House>
</ContentControl>
</UserControl>
J'ai essayé d'utiliser les propriétés par défaut, les propriétés de dépendance, implémentant l'interface IPropertyChanged, essayé de déplacer la propriété au contrôle et à la répétition de ce qui précède ... et toujours rien.
Qu'est-ce qui me manque? Comment puis-je mettre le contrôle à jour la bordure (et l'arrière-plan) une fois que j'ai changé cette propriété?
Merci d'avance.
Marcelo