2013-08-12 6 views
2

Я пытаюсь реализовать шаблон MVVM для моего приложения Windows Phone. У меня есть мои представления в одном проекте и App.xaml в другом проекте. Я добавил свойство IsTrial в App.xaml, но я не могу добраться до него из просмотра этого кода:Как получить ссылку на приложение

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

Потому что я не ссылается первый проект с App класса, но я не могу этого сделать, потому что приведет к круговая зависимость. Что я могу сделать? Как я могу получить доступ к классу App? Благодаря

+1

Не можете ли вы передать эту информацию в свою модель просмотра, когда вы ее создаете? Ваши взгляды действительно должны только извлекать данные из viewmodel. – steveg89

+0

Обычно я создаю статический класс ApplicationInfo в общем проекте с такими свойствами. Таким образом, его легко получить доступ к глобальной информации из любого проекта, связанного с текущим приложением. – keft

ответ

2

Создать интерфейс в вашем проекте Просмотров:

public interface ISupportTrial 
{ 
    bool IsTrial { get; } 
} 

Реализовать интерфейс в App.xaml.cs:

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

Изменить код, где доступ к приложению:

var trialApp = Application.Current as ISupportTrial; 
if (trialApp == null) 
{ 
    throw new NotSupportedException("Application.Current should implement ISupportTrial"); 
} 
else if (trialApp.IsTrial) 
{ 
    ... 
} 
else 
{ 
    ... 
} 

ПРИМЕЧАНИЕ. : Хотя это, вероятно, будет работать, я не думаю, что это хорошая практика для доступа к Application.Current. Возможно, вы захотите прочитать некоторые статьи об инверсии управления и зависимости.

Смежные вопросы