2011-09-13 3 views
0

결합되어 새로운 모델을 돌려줍니다.ViewModelLocator.LocateForView이 아닌 모델은 ContentControl이 나는대로 XAML에서 ContentControl을 정의해야

내 ViewModel은 속성이 정의되어 있으며 ViewModel의 생성자에서 설정되고 생성자 삽입을 사용하여 인스턴스를 만듭니다.

보기가 인스턴스화되었지만 ViewModel에서 작성된 모델에 액세스 할 수 없으며보기의 xaml.cs 생성자에서 인스턴스를 가져올 때 새 모델을 작성하는 것으로 보입니다.

var model = Caliburn.Micro.ViewModelLocator.LocateForView(this) as DynamicDataGridViewModel; 

뷰를 생성 할 때 뷰와 연관시킬 모델을 올바르게 가져올 수 있습니까? ContentControl에이 도킹 패널에 내장되어

답변

0

경우 당신은 단지 ContentControl을 x:Name="ProductionGrid을 "이름을 지정할 수 있습니다 및보기 인스턴스화됩니다 Micro:View.Model="{Binding ProductionGrid}"

을 필요가 없습니다,하지만 난 가에서 만든 모델에 액세스 할 수 없습니다 뷰 모델,보기의 xaml.cs 생성자에서 인스턴스를 얻을 을하려고 할 때 새로운 모델을 만들 것 같다. 당신은 ViewModel을 인스턴스화됩니다 의미

?

바인딩이 작동합니까? 나는보아야하지만 CM이 ProductionGrid의 ProductionGridView를 찾으면 잘 모르겠다. 확실하지는 않다. ProductionGridViewModel 및 ProductionGridView가 작동합니다.

xaml.cs 생성자에서 아무 것도 코딩 할 필요가 없습니다. 실제로 xaml.cs 파일을 삭제합니다.

+1

나는 ContentControl 이름 매개 변수를 사용하려고했지만 어떤 이유로 든 작동하지 않았습니다. 도킹 패널은 제 3 자입니다. View는 생성되었지만 View 생성자에서 액세스 할 수있을만큼 초기에 ViewModel에 "첨부"되어 있지 않습니다 (실제로는 가능하지 않음). 일반적으로 xaml.cs에서 코드를 작성하지는 않겠지 만 컨트롤을 다시 사용하려고했지만 재 작성하지 않았습니다. 결국 ViewMware를 ViewAware에서 파생시키고 OnViewAttached를 사용하여 필요한 작업을 수행했습니다. 어쨌든 많은 컨트롤을 다시 작성해야했습니다. – tracstarr