현재 ListBox
위에 마우스를 가져 가면 ListBox
과 겹치는 Popup
이있는 ControlTemplate을 실험하고 있습니다. 이제 ListBox
위로 마우스를 움직이면 디스플레이가 Popup
처럼 잘 작동합니다.값이 false 일 때이 트리거가 왜 업데이트됩니까?
그러나, 최대한 빨리이 Popup
위로 마우스를 같이하여 ListBox
를 떠나으로 트리거 다시 IsOpen
-Property를 업데이트 할 것 같습니다과 Popup
을 닫습니다. 내 이해에서 트리거는 IsMouseOver
-Property가 true
으로 설정되고 따라서 Popup
이 열려 있어야합니다 (트리거 할 수있는 요소가 있어야하기 때문에).
논리 오류가 있거나이 경우 트리거가 얼마나 정확하게 작동합니까?
<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>
트리거가 이와 같이 작동하는 이유에 대한 개념이 있습니까? Btw. 내가보기 모델에서 그것을 할 것이라고 생각하지만 XAML 트리거를 사용하여 수행 할 수 있는지 궁금합니다. – Adwaenyth
"트리거 조건이 더 이상 충족되지 않으면 트리거에 의해 변경된 속성이 이전 값으로 자동 재설정됩니다."https://msdn.microsoft.com/en-us/library/system.windows.trigger(v=vs. 110) .aspx. 이것이 예상되는 동작입니다. 예를 들어 요소에 IsMouseOver 트리거를 적용한다고 가정합니다. 그런 다음 마우스가 떠날 때이 브러시를 붙이지 않기를 바랄 것입니다. 이것은 매우 이상 할 것입니다. – mm8