2009-12-07 3 views
0

다른보기 내부에 의사 모달 팝업으로 작동하는 재사용 가능한 ContentControl이 있습니다. 항상 표시되며 표시 여부 만 표시되거나 사라집니다. 인스턴스화 될 때 ContentControl 내에는 일부 ViewModel에 바인딩되고 "모달 팝업"의 내용을 나타내는 사용자 정의 ContentTemplate이 있습니다. 다음과 같은 인터페이스를 구현해야합니다 (ItemEditorView 여기)를 ContentTemplate의 루트 :ContentControl이 ContentTemplate 내부의 라우트되지 않은 이벤트를 수신하는 방법

<Dialogs:ModalDialog DialogHost="{Binding ElementName=layoutRoot, Mode=OneTime}" 
        Content="{Binding ViewModel.CurrentEditItem}" 
        IsShown="{Binding ViewModel.IsInEdit}"> 
    <Dialogs:ModalDialog.ContentTemplate> 
    <DataTemplate> 
     <ItemEditor:ItemEditorView /> 
    </DataTemplate> 
    </Dialogs:ModalDialog.ContentTemplate> 
</Dialogs:ModalDialog> 

지금 나는 다음에 도달합니다. CloseMe - 이벤트가 발생할 때마다

public interface ICloseMe 
{ 
    event EventHandler<EventArgs> CloseMe; 
} 

는 주변 ModalDialog 숨겨진 자사의 VisibilityProperty을 설정하여 "폐쇄"해야한다.

팝업 내보기 (여기 ItemEditorView)는 ModalDialog 또는 다른 컨텍스트에 표시되는지 여부, 즉 그러한 클래스가 있는지조차 알지 않아야합니다. 이것은 논리 또는 시각 트리를 통해 산책을 제외합니다. 취소/저장 버튼을 누르면 CloseMe-Event 만 실행됩니다.

또한 메커니즘은 ModalDialog를 인스턴스화하는보기에서 구현/구성되어서는 안되며,보기는 가능한 한 바보가되어야합니다.

대신 "외부"ModalDialog가 활성 부분을 수행하고 CloseMe 이벤트를 수신해야합니다. 불필요한 종속성을 유발하지 않고 어떻게 MVVM 호환 방식으로 구현할 수 있습니까? ContentTemplate이 초기화 된 후 발생하는 이벤트가 있습니까? ModalDialog는 그 루트가 ICloseMe를 확장한다면 평가할 수 있습니까?

답변

0

ICloseMe은 XAML에서 트리거를 설정할 수있는 Closed 속성을 포함하고 있습니까?

+0

추가 의존성을 만들지는 않겠지 만 ModalDialog는 ItemEditorView의 Closed-Property에 어떻게 연결될 것입니까? –

관련 문제