2009-07-24 3 views
1

MVVM WPF 응용 프로그램을 작성할 때 항상보기 모델을보기의 데이터 컨텍스트로 설정해야하는 지점이 있습니다. 나를 위해, 보통 코드에 있습니다. 그러나 뷰 모델을 xaml 내부의 정적 리소스로 선언하고 거기에 바인딩을 설정하면 코드에서 더 이상 필요가 없다는 것을 알게되었습니다. 즉, App과 같이 어딘가에서 세 번째 클래스의 뷰와 뷰 모델을 조정할 필요가 없습니다.보기에서보기 모델을 정적 리소스로 선언해도 괜찮습니까?

허용 되나요?

감사합니다.

답변

1

나는 그렇게 말하고 싶다. 보기의 ViewModel에 대한 특정 지식을 암시하지만, 어떻게 든 설정해야하며 여기서는 코드 비 숨쉬는 방식을 좋아합니다.

의존성 주입을 사용하는 경우 적절하지 않지만, 그렇지 않은 경우이 방법을 계속 사용하십시오.

+0

모르겠어요 어떤 의존성 주입 아직 사용 중이 지 않다는 것을 알았으므로 :) # – djcouchycouch

+0

MVVM을하고 있다면, 조사하고 싶을 것입니다. 당신의 프로젝트가 어떤 크기라도 있다면, 나는 또한 (스티브 로빈스가 올바르게 언급 한) 프리즘을 살펴볼 것을 제안 할 것이다. 그것은 DI의 아주 좋은 응용입니다. MVVM을 좀 더 쉽게 만들어주는 몇 가지 사항이 있습니다. 적어도 mvvmfoundation.codeplex.com을 사용하고 있지 않다면 너무 열심히 노력하고 있습니다. –

0

PRISM 또는 DI를 사용하는 경우 컨테이너에서 데이터를 확인한 다음 데이터 액세스 코드를 코드 또는 마크 업 확장 프로그램을 사용하여 설정하는 것이 더 적합합니다. 당신의 정확한 해결책. 당신의 ViewModel 로케이터 패턴을 시도보기 - 첫 번째 방식에 의존성 주입 (DI)를 사용하려면

+0

ㅎ ... 위대한 생각은 똑같습니까? –

+0

어딘가에 DI 또는 PRISM을 언급하지 않고도 WPF/SL 질문에 대답하지 않으려 고 노력합니다. –

+0

아 ... 간단히 말해서. 나는 프리즘을 팔기를 좋아한다. –

0

:

public static class ViewModelLocator 
{ 
    public static MainWindowViewModel MainWindowViewModel 
    { 
    get 
    { 
     return ObjectFactory.GetInstance<MainWindowViewModel>(); 
    } 
    } 
}; 

및 WPF 코드 :

<Window 
    ... 
    DataContext="{x:Static Services:ViewModelLocator.MainWindowViewModel}" 
    > 
관련 문제