2014-06-20 4 views
1

첫 번째 질문은 간단하지만 WPF 및 MVVM을 처음 사용하는 사람에게는 사과해야하며 실제로 작업 방법을 모릅니다.ViewModel에서 팝업을 만들고 표시하는 방법

내가 필요한 것은 ViewModel의 팝업을 보여주는 것입니다. 나는 viewModel에 부울 속성을 가질 수 있고 팝업의 IsOpen 속성에 바인딩 할 수 있지만이 팝업 창을 만들 위치를 모른다.

몇 가지보기가 있으며 각각의보기에는 상황에 따라 특정 팝업 메시지가 표시되어야합니다. 이제 각각의 뷰에서 여러 개의 팝업을 만들고 ViewModel의 IsOpen 속성을 바인드해야하는지, 아니면 더 나은 솔루션이 있는지 확인해야하며, 뷰에서 뷰를 생성해야한다면 어디에 배치해야할까요? 그리드에서 StackPanel 또는 그 밖의 다른 곳에서.

명확하게 설명하지 않은 경우 알려 주시기 바랍니다. 어떤 도움을 주셔서 감사합니다.

답변

1

이것은 샘플 팝업입니다. reference

basic popup msdn overview

<StackPanel> 
<CheckBox Name="PCheckBox" Margin="10,10,0,0" 
     Content="Popup Window"/> 
<Button HorizontalAlignment="Left" Width="129" Margin="10,10,0,0"> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation 
     Storyboard.TargetName="theTransform" 
     Storyboard.TargetProperty="(RotateTransform.Angle)" 
     From="0" To="360" Duration="0:0:5" AutoReverse="True"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Button.Triggers> 
    Start Animation 
</Button> 
<Popup IsOpen="{Binding ElementName=PCheckBox,Path=IsChecked}" 
    PlacementTarget="{Binding ElementName=PCheckBox}"   
    AllowsTransparency="True" 
    PopupAnimation="Slide" 
    HorizontalOffset="150" 
    VerticalOffset="100" 
    > 

    <Canvas Width="100" Height="100" Background="Green" Margin="150"> 
     <Canvas.RenderTransform> 
      <RotateTransform x:Name="theTransform" /> 
     </Canvas.RenderTransform> 
     <TextBlock TextWrapping="Wrap" Foreground="LightGray"> 
    Rotating Popup 
</TextBlock> 
    </Canvas> 
</Popup> 

private void OnPopupLoaded(object sender, RoutedEventArgs e) 
    { 
     this.ParentPopup.HorizontalOffset = (Window.Current.Bounds.Width - gdChild.ActualWidth)/2; 
     this.ParentPopup.VerticalOffset = (Window.Current.Bounds.Height - gdChild.ActualHeight)/2; 
    } 
+0

좋아요. 화면 중앙에 어떻게 표시해야합니까? – user3530012

1

나는 보통

WindowManager

마녀로 뷰 모델을 소요 Caliburn의 창 관리자처럼 내 팝업의와 대화 상자를 제어하는 ​​제 3 목적을 가지고 콘텐츠를 표시하고 팝업에서 해당보기를 표시합니다.

비슷한 기능을 수행하고 ViewModel의 컨텐츠를 팝업 또는 대화 상자에 바인딩 할 수 있습니다.

는 예를 들어, 여기에 사용자 지정 작업 내가 같은 목적을 위해 만든입니다 :

OpenPopupWindowAction

관련 문제