Контроллер интерфейса (ViewModel) для нескольких интерфейсов - PullRequest
1 голос
/ 02 июля 2010

В настоящее время я разрабатываю новое приложение .NET и хотел бы, чтобы его интерфейс был независимым.

Хотя изначально я хотел бы использовать WPF, я хотел бы иметь возможность при необходимости поменять пользовательский интерфейс на ASP или WinForms.

В многоуровневом дизайне:

Представление - Контроллер интерфейса (ViewModel) - Модель - Persistance

Возможно ли спроектировать интерфейсный контроллер так, чтобы он работал с различными технологиями представления, или мне потребуется заменить контроллер интерфейса одновременно сПросмотр

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Посмотрите на мой ответ на вопрос "Silverlight с MVVM Inheritance: ModelView и представление, соответствующее модели" .

Ответ, который я дал, работает дляВаша ситуация тоже.

В двух словах, я определяю следующие общие интерфейсы:

public interface IModel
{
}

public interface IViewModel
{
}

public interface IViewModel<M> : IViewModel
    where M : IModel
{
    void Bind(M model);
}

public interface IView
{
}

public interface IView<VM> : IView
    where VM : IViewModel
{
    void Bind(VM viewModel);
}

, которые позволяют мне определять конкретные интерфейсы, такие как:

public interface IPersonModel : IModel
{
}

public interface IPersonViewModel : IViewModel<IPersonModel>
{
}

public interface IPersonView : IView<IPersonViewModel>
{
}

Byреализуя свои слои на основе этих интерфейсов, вы можете поменять местами реализацию интерфейса IView<VM> с WPF, Silverlight, Windows Forms или даже ASP.Net.

0 голосов
/ 02 июля 2010

До тех пор, пока вы

1) не соблазнены добавлять код в вашу разметку xaml

2) и ограничивать все соответствующие функции, которые будут продиктованы вашей моделью представления

тогда да, вы должны иметь возможность поменять его с любой технологией представления.

Когда вы поменяете его, хотя вам, очевидно, придется изменить способ взаимодействия нового пользовательского интерфейса с моделью представления.Основными интерфейсами, которые WPF использует для подключения к модели представления, является INotifyPropertyChanged, INotifyCollectionChanged и ICommand.Таким образом, вашему новому пользовательскому интерфейсу в основном придется задействовать эти интерфейсы, чтобы получить ту же функциональность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...