2013-09-27 1 views
1

글쎄 이런 유형의 문제에 대해 많은 해결책을 발견했지만 문제를 해결할 수 없습니다. 나는 몇 가지 wpf/mvvm 응용 프로그램에서 작동합니다. 내 응용 프로그램은 다음과 같이 구성되어있다 :이 프로젝트를 참조로 추가하면 순환 종속성이 생깁니다. mvvm

  • 한 프로젝트
  • 하나의 프로젝트 뷰에 대한 뷰 모델
  • 에 대한는
  • 하나의 WCF 서비스 프로젝트

그래서 문제는 이것이다 : 나는 새로운 데이터 컨텍스트를 할당해야 내 창, 내 viewmodel 클래스에서. 다음과 같은 (내보기 모델 클래스에서) :

SomeWindow window = new SomeWindow(); 
window.DataContex = this.someViewModel; 

문제점 View 클래스에 액세스 할 수 없습니다. 내 뷰 프로젝트에 내 viewmodel 참조를 추가했지만 위의 오류가 발생하면 내 viewmodel에 내 뷰의 참조를 추가 할 수 없습니다. 어떻게 해결할 수 있습니까 ??

+0

다른 방법으로 참조를 이동 하시겠습니까? WCF는 아무도 참조하지 않아야하며, 뷰는 VM 및 가능한 WCF를 참조해야하며 VM은 뷰가 아닌 WCF를 참조해야합니다. 유형이 잘못된 어셈블리에 있으면 이동하십시오. – Will

답변

3

viewModels 프로젝트에서 데이터 컨텍스트를 지정하는 것이 왜 필요한지 이해할 수 없습니다 (Views 프로젝트에없는 이유). 그러나 이런 식으로해야하는 경우, 가장 일반적인 접근법은 이러한 목적을위한 다른 (중간) 프로젝트를 만드는 것입니다. 이 새 프로젝트에는 Views 프로젝트 및 ViewModels 프로젝트에 대한 참조가 있습니다.

다른 한편으로 ViewModels와 Views는 같은 프로젝트 (다른 ​​폴더/네임 스페이스)에있는 경우가 많으므로이 경우에는 문제가 존재하지 않습니다.

+0

나는 내가이 문제를 짧게하고 싶을 뿐이 기 때문에 왜 이렇게해야하는지 설명하지 못했습니다. 어쨌든 그 목적을 위해 중간 프로젝트를 추가하려고 시도했지만 동일한 오류가 발생했습니다. 내 View의 참조를 추가 할 수는 있지만 내 ViewModel의 참조를 추가하지 마십시오. – Stojdza

+0

중간 프로젝트는 두 프로젝트 (view 프로젝트, viewModels 프로젝트)에 대한 참조가 있어야합니다. 사용 이유는 –

+0

입니다. 참고로 중간 프로젝트를 만들었지 만 창 클래스의 객체를 만들 때 구성 요소를 초기화하고 아무것도 사용할 수 없습니다 그밖에. DataContext에 어떻게 접근합니까? – Stojdza

1

viewmodel은 뷰를 "알거나"참조 할 필요가 없습니다. 그래서 당신은 viewmodel 프로젝트에서 참조가 필요 없다.

보기의 datacontext를 변경하려면 해당보기에 바인딩 된보기 모델의 "작업 영역"속성 만 변경하면됩니다.

관련 문제