2012-03-29 4 views
1

저는 PRISM 및 MVVM과 WPF를 사용하여 .NET 4.0 응용 프로그램을 개발 중입니다.PRISM을 사용하여 모달 대화 상자 표시 4

현재 뷰가 삽입 된 셸이 영역별로 세분화되어 있습니다. 사용자가보기 중 하나에서 단추를 클릭하면 사용자 정의 모달 대화 상자가 모든보기 위에 표시되지만 동일한 셸 내에서 표시되도록하고 싶습니다.

StockTrader RI 예제와 RegionPopupBehavior 구현에 대해 살펴 보았습니다. 기본적으로 개발자는 특정 맞춤형 동작으로 영역을 정의 할 수있는 종속성 속성을 만들었습니다. 이 동작은 연관된 뷰의 렌더링을 처리하는 것을 담당하므로 팝업 창으로 표시됩니다.

이 방법의 유일한 단점은 다른 모든 뷰가 여전히 활성화되어 있다는 것입니다, 그래서 팝업 모달되지 않습니다. 이 수동으로 셸에서 불필요한 영역을 모두 해제하여 해결할 수있을 것 같아요,하지만 어떻게 "깨끗한"확실하지 않아요. 프리즘에 모달 팝업 뷰를 표시에 더 간단한 방법이 있다면

궁금 해서요?

+0

이 바로 WPF,하지 실버 바인딩 할 수 있습니까? –

+0

올바른 WPF입니다. 나는 그 질문을 편집했다. 고마워. :) –

+1

어쩌면 당신은 이것과 비슷한 것을 사용할 수 있습니다. http://stackoverflow.com/questions/8103743/wpf-c-sharp-inputbox/8103869#8103869? MVVM의 수정 된 버전에서이 기능을 사용하여 동일한 작업을 수행합니다. – eandersson

답변

2

당신은 내가 그 같은 행동 내 블로그에 게시 한 사용자 정의 PopupUserControl에 관심이있을 수 있습니다.

는 보통 I는 다음과 같이 사용 :

<local:PopupPanel 
    Content="{Binding PopupContent}" 
    local:PopupPanel.PopupParent="{Binding ElementName=SomeParentPanel}" 
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}"> 

    <local:PopupPanel.Resources> 
     <DataTemplate DataType="{x:Type local:SomeViewModel}"> 
      <local:SomeView /> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type local:DifferentViewModel}"> 
      <local:DifferentView /> 
     </DataTemplate> 
    </local:PopupPanel.Resources> 

</local:PopupPanel> 

하지만 당신은 또한 단지 팝업의 내용을 쓰기 대신 Content 속성

<local:PopupPanel 
    local:PopupPanel.PopupParent="{Binding ElementName=SomeParentPanel}" 
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}"> 

    <Border BorderBrush="Blue" BorderThickness="2"> 
     <local:MyUserControl /> 
    </Border> 
</local:PopupPanel> 
+0

감사합니다! ViewModel에 UI 요소가 없어야한다는 사실에 대해 옳습니다. 당신이 제안한대로 최고의 솔루션을 추측 : 개체에 바인딩하고 데이터 템플릿을 가지고 ... –