2011-12-13 3 views
0

mvvm 패턴을 사용하여 wpf에서 사용자 콘트롤 (메인 윈도우가 아닌)에서 모달 팝업을 열려면 어떻게해야합니까?WPF의 usercontrol에서 모달 팝업 사용자

윈도우에없는 usercontrol에서 팝업을 열려고 할 때 내 질문에 모두 답이되기를 바랍니다.

답변

0

모달은 usercontrol이 아닌 새 창을 의미합니다. 사용자 정의 컨트롤은 Page 또는 Window 내부의 컨트롤입니다.

따라서 모달로 만들고 싶다면 사용자 컨트롤이 창 전체를 덮도록 만들고 그 안에있는 내용을 완료해야만 닫을 수 있습니다. 어쩌면 부분적으로 투명하게 만들어서 원하는 경우 팝업처럼 보일 수도 있습니다.

0

나는 이것이 당신이 예상하고있는 것인지 모르겠다. 응용 프로그램 정상 창문 하나를 열어에서와 동일하다 WPF에서 팝업 모델을 열기

**ModalWin objWin = new ModalWin(); 
objWin.ShowDialog();** 

감사 스리

+0

영업 물었다 이것은, MVVM 없습니다. –

0

모달는 일반적으로를 들어, 응용 프로그램에 모달을 의미하거나, 팝업의 경우 창문. 특정 컨트롤을위한 것이 아닙니다. 당신이 팝업을 표시하는 동안 특정 컨트롤을 비활성화하려면

, 당신은 트리거에이를 수 :

<Popup x:Name="popup"> 
    <!-- ... --> 
</Popup> 
<UserControl> 
    <UserControl.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsOpen, ElementName=popup}" 
          Value="True"> 
        <Setter Property="IsEnabled" Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </UserControl.Style> 
<UserControl> 
0

이 실제로 상당히 관련된 주제입니다. 솔루션을 사용하기 때문에
유래는 스리의 휴식이 좋은 자리가 UserControl을하거나 MainWindow를에 팝업을 열고, 또한 Handling Dialogs in WPF with MVVM

을 시작하는 것입니다 여기

을 MVVM 같은 MVVM에서 대화 상자에 대한 정보를 많이 가지고 같은 것입니다.

0

Adorner를 사용하십시오.

public class OpaqueAdorner : Adorner 
    { 
     public OpaqueAdorner(UIElement win) 
      : base(win) 
     { } 

     protected override void OnRender(System.Windows.Media.DrawingContext drawingContext) 
     { 
      SolidColorBrush renderBrush = new SolidColorBrush(Colors.LightCoral); 
      renderBrush.Opacity = 0.3; 
      Pen renderPen = new Pen(new SolidColorBrush(Colors.DarkBlue), 5.0); 

      drawingContext.DrawRectangle(renderBrush, renderPen, 
       new Rect(new Point(0, 0), AdornedElement.DesiredSize));    
     } 
    } 

은/* GRD는 PopupOpened/Closed 이벤트와이 개념을 결합 컨테이너 그리드 */

private void Btn_Click(object sender, RoutedEventArgs e) 
    { 
     //GetAdornerLayer was missing ')' 
     AdornerLayer.GetAdornerLayer(Grd).Add(new OpaqueAdorner(Grd)); 
    } 

입니다.

0

오래된 질문이지만이 검색을 수행하면 많은 관련 질문을 찾을 수 있지만 정말 명확한 답변을 찾지 못했습니다. 그래서 나는 자신의 대화 상자/메시지 상자/popin 구현을 만들고 그것을 공유한다!
https://stackoverflow.com/a/40135791/2546739
그것은 다음과 같은 일들을 보여주고있다 :
2