2013-08-12 3 views
2

내 Windows Phone 응용 프로그램에 MVVM 패턴을 구현하려고합니다. 한 프로젝트에서 내 Views를, 다른 프로젝트에서 App.xaml을 가지고 있습니다. 나는 App.xaml에 재산 IsTrial을 추가하지만이 코드보기에서 도달 할 수응용 프로그램에 대한 참조를 얻는 방법

if ((Application.Current as App).IsTrial) 

내가 응용 프로그램 클래스와 첫 번째 프로젝트를 참조하지 않았지만 내가 할 수 없기 때문에 그 원인이 있기 때문에 그 순환 종속성. 내가 무엇을 할 수 있을지? App 클래스에 어떻게 액세스 할 수 있습니까? 감사합니다

+1

인스턴스화 할 때 해당 정보를 viewmodel에 전달할 수 없습니까? 뷰는 실제로 뷰 모델에서 데이터를 가져 오는 것입니다. – steveg89

+0

나는 보통 이러한 종류의 속성을 가진 공유 프로젝트에 정적 ApplicationInfo 클래스를 만듭니다. 이렇게하면 현재 응용 프로그램과 관련된 모든 프로젝트에서 글로벌 정보에 쉽게 액세스 할 수 있습니다. – keft

답변

2

은 조회수 프로젝트에 인터페이스를 만들기 :

var trialApp = Application.Current as ISupportTrial; 
if (trialApp == null) 
{ 
    throw new NotSupportedException("Application.Current should implement ISupportTrial"); 
} 
else if (trialApp.IsTrial) 
{ 
    ... 
} 
else 
{ 
    ... 
} 
: 앱에 액세스 곳

public class App: Application, ISupportTrial 
{ 
... 
} 

변경 코드 :

public interface ISupportTrial 
{ 
    bool IsTrial { get; } 
} 

이 App.xaml.cs를의 인터페이스를 구현


참고 : 아마도 이것이 가능할 지 모르지만 Application.Current에 액세스하는 것이 좋습니다. Inversion of Control 및 Dependency Injection에 대한 기사를 읽으십시오.

관련 문제