Actuellement j'expérimente avec un ControlTemplate qui a un ListBox
et un chevauchement Popup
qui devrait se déclencher une fois que je passerai la souris sur le ListBox
. Maintenant, cela fonctionne bien comme dans les affichages Popup
dès que je survole le ListBox
.Pourquoi ce déclencheur est-il mis à jour lorsque sa valeur est fausse?
Cependant, dès que je quitte le ListBox
comme le vol stationnaire au-dessus de la Popup
le déclencheur semble mettre à jour le IsOpen
-Property à nouveau et ferme la Popup
. D'après ce que j'ai compris, le déclencheur ne devrait se déclencher que lorsque la propriété IsMouseOver
-Property est définie sur true
et que le Popup
doit rester ouvert (ce que j'ai prévu car il doit contenir des éléments cliquables).
Est-ce que j'ai une erreur logique ou comment le déclencheur fonctionne-t-il exactement dans ce cas?
<ControlTemplate x:Key="SelectTargetsListBox">
<Grid>
<ListBox x:Name="PART_ListBoxBonusTargets" Height="200"
ItemsSource="{Binding Path=Targets}" />
<Popup Name="PART_PopupListBoxBonusTargets"
PlacementTarget="{Binding ElementName=PART_ListBoxBonusTargets}"
Placement="Right"
VerticalOffset="-10" HorizontalOffset="-10"
PopupAnimation="Fade" AllowsTransparency="True" StaysOpen="True">
<Border MinHeight="300" MinWidth="400"
Background="{StaticResource BonusPopupBackgroundColor}"
BorderBrush="{StaticResource BonusForegroundColor}"
BorderThickness="3">
</Border>
</Popup>
</Grid>
<ControlTemplate.Triggers>
<Trigger SourceName="PART_ListBoxBonusTargets"
Property="IsMouseOver" Value="True">
<Setter TargetName="PART_PopupListBoxBonusTargets"
Property="IsOpen" Value="True" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Y at-il une notion de pourquoi les déclencheurs fonctionnent comme ça? Btw. Je pense que je vais le faire dans le modèle de vue, mais j'étais curieux de savoir si cela pouvait être fait avec des déclencheurs XAML. – Adwaenyth
"Les propriétés modifiées par les déclencheurs sont automatiquement réinitialisées à leur valeur précédente lorsque la condition déclenchée n'est plus satisfaite": https://msdn.microsoft.com/en-us/library/system.windows.trigger(v=vs. 110) .aspx. C'est le comportement attendu. Considérons par exemple que vous appliquez un déclencheur IsMouseOver à un élément. Ensuite, vous ne voudriez pas que cette brosse reste quand la souris part. Ce serait très étrange. – mm8