2010-05-10 2 views
-1

ModelView 샘플 응용 프로그램에 표시된대로 WAF (Wpf Application Framework)를 사용하여 대화 상자를 만듭니다. CreateEmailAccountWizard 대화 상자를 구성하는 코드를 미러링하여 간단한 AboutBox를 표시하려고합니다. 내 정보 상자가 처음에는 문제가되지 않지만 메뉴에서 다시 호출하면 다음과 같은 예외가 발생합니다.표시 여부를 설정할 수 없거나 Show, ShowDialog 예외를 호출 할 수 없습니다.

창이 닫힌 후에 표시 여부, 표시 여부, ShowDialog 또는 WindowInteropHelper.EnsureHandle을 설정할 수 없습니다.

먼저이 메시지의 의미를 모르겠습니다. 둘째, 내가 뭘 잘못하고 있니? CreateEmailAccountWizard 대화 상자를 닫았다가 다시 열 때이 응용 프로그램은이 예외를 throw하지 않습니다. 내 코드는 거의 동일합니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

-1

신경 쓰지 마세요. 문제의 원인을 찾았습니다. 나는 MEF에서 싱글 톤을 만들고 있었고 동일한 대화 상자 인스턴스가 두 번 실행되고있었습니다. 나는 수행하여 문제를 해결 다음

[Export, PartCreationPolicy(CreationPolicy.NonShared)] 
public class AboutDialogViewModel : ViewModel<IDialogView> 
{ 
    [ImportingConstructor] 
    public AboutDialogViewModel(IDialogView view) : base(view) 
:

 var shellView = _container.GetExportedValue<IShellView>(); 
     _aboutDialogViewModel = _container.GetExportedValue<AboutDialogViewModel>(); 
     _aboutDialogViewModel.ShowDialog(shellView); 

나는 또한 싱글 톤을 사용하지 않는 그에게 클래스에 MEF 속성을 설정했다

관련 문제