내 ViewModel의 불리언 속성에 가시성을 바인딩하여 기본 창에 오버레이로 표시하는 몇 가지보기가 있습니다.팝업 대 가시성 전환
<Style x:Key="NotificationsView" TargetType="UserControl">
<!-- snipped -->
<Style.Triggers>
<DataTrigger Binding="{Binding IsNotificationsViewVisible}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsNotificationsViewVisible}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
나는 팝업을 사용하는 것이 바람직 할 수 있는지 궁금 :
<Grid>
<vw:MainContentView/>
<!-- Overlays (normally invisible) -->
<vw:NotificationsView/>
</Grid>
'NotificationsView'은 다음과 같습니다 스타일을 가지고
메인 윈도우는 다음과 같이 보입니다 보기의 가시성을 직접 전환하지 않고 'IsOpen'속성을 ViewModel의 'IsNotificationViewVisible'속성에 바인딩하면됩니다.
<Grid>
<vw:MainContentView />
<!-- Popups (normally invisible) -->
<Popup IsOpen="{Binding IsNotificationsViewVisible}">
<vw:NotificationItemsView/>
</Popup>
</Grid>
한 가지 방법을 다른 방법 (메모리 사용 또는 다른 방식)보다 사용하려는 이유가 있습니까? 두 가지 접근법 모두 잘 작동하는 것 같습니다. Popup에는 몇 가지 무료 애니메이션이 있지만 다른 점은 똑같습니다.
충분히 공정함 - 나는 팝업 창이 메인 윈도우에서 움직이지 않는다는 것을 알아 채지 못했습니다! 이 동작은 꽤 많은 것을 결정합니다. 나는 visiblity 접근법을 사용할 것입니다. 감사! – user158485