2015-03-04 4 views
1

Мне нужно написать новый UserControl для AccountManagement. Для того, чтобы интегрировать в приложение с несколькими TabItem моя UserControl должен реализовать интерфейс IModule, который выглядит примерно так:UserControl design

public interface IModule : INotifyPropertyChanged 
{ 
    FrameworkElement TabContent { get; } 
    ImageSource TabIcon { get; } 
    string TabTitle { get; } 
} 

Я хочу построить UserControl для AccountManagement с MVVM, так что я хочу, чтобы реализовать интерфейс IModule в моем ViewModel ,

Мои два вопроса:

  1. Это хорошее решение, или я должен предпочесть реализовать IModule на мой взгляд-CodeBehind?

  2. Если я реализую IModule в ViewModel, как я могу передать View как TabContent родительскому?

ответ

0

Номер FrameworkElement является концепцией представления и не должен находиться в ViewModel. Я предполагаю, что вам придется реализовать его в кодировке, но почему вы не видите, как записываются другие вкладки, и убедитесь, что вы совместимы с существующей кодовой базой?

EDIT: Вам все равно необходимо реализовать вышеизложенное в представлении. Все три свойства основаны на просмотре, за исключением, возможно, TabTitle, который мог бы вытащить свое имя из модели просмотра. Ничто не мешает вам двигаться к MVVM для содержимого вкладки, но это существующее требование нужно будет сделать в представлении.

Хорошее эмпирическое правило для принятия решения о том, что что-то принадлежит виртуальной машине, заключается в том, чтобы рассмотреть вопрос о том, можно ли тестировать виртуальную машину без какого-либо представления вообще или теоретически написать текстовое консольное представление для управления виртуальной машиной.

+0

Другие вкладки еще не соответствуют шаблону MVVM. – Tomtom

+0

Мне удалось реализовать интерфейс в моей модели viewmodel. В той части, где создается объект, я создаю View и ViewModel и назначаю ViewModel для просмотра explicite. Поэтому я могу установить TabContent извне в представление. – Tomtom