Autofac
과 함께 Caliburn.Micro v2
을 사용하고 있으며 WindowManager.ShowDialog
기능과 관련된 몇 가지 문제가 있습니다.인스턴스 수명 관리
나는 성공적으로 표시 다음을 가지고 dialog
:
windowManager.ShowDialog(dialogViewModel.Show(typeToShow));
cross
버튼을 통해 새로 표시된 창을 닫은 후 나는 위가 다시 한번 dialog
를 볼 것으로 예상 되 경우에, 나는 다음과 같은 예외가 발생할 :
가시성을 설정하거나 창을 닫은 후에 Show, ShowDialog 또는 WindowInteropHelper.EnsureHandle을 호출 할 수 없습니다.
그것은 오류가 ShowDialog
한 번만 사용할 수있는 때문입니다 내 이해하고 내가 다시 ShowDialog
를 호출 할 경우에 것을, 나는 새로운 인스턴스를 제공해야합니다. 내가 사용하여 어느 정도이 입증 :
windowManager.ShowDialog(new DialogViewModel().Show(typeToShow));
이 성공적으로 새로운 dialog
때마다 결과,하지만, 내가 여기 때마다 new
을 호출하고자하지 않습니다. 따라서 Autofac
에 동일한 인스턴스를 다시 사용하지 않고 매번 DialogViewModel
의 새 인스턴스를 제공한다고 어떻게 말합니까?
편집 1 - 내가 이전 .SingleInstance()
을 이용하여 제가 찾던 수 있습니다 .InstancePerDependency()
를 사용하여 생각했다
var buider = new ContainerBuilder();
builder.Register(e => new DialogViewModel())
.AsSelf()
.InstancePerDependency();
DialogViewModel 등록, 그것은 아니지만 나타납니다.
어떻게하면 대화 뷰어 모델을 컨테이너에 등록 하시겠습니까? – nemesv
@nemesv - VM 컨테이너 등록을 포함하도록 OP 편집. – Unflux