Преобразование приложения WPF/ADO.NET Data Services в шаблон MVVM — примеры

У меня есть приложение WPF, написанное на C#. Это приложение не было написано с учетом какого-либо конкретного шаблона проектирования, но, изучив .NET, я понял, что модель MVVM подойдет. Таким образом, я хотел бы начать преобразование кода.

Это будет первый раз, когда я использую MVVM, и хотя я готов застрять, мне трудно найти надежные примеры MVVM в Интернете, где служба данных ADO.NET является моделью, а XAML — это представление . Я хотел бы просмотреть несколько примеров, прежде чем приступить к процессу конвертации собственного приложения, чтобы убедиться, что я правильно понял, что делаю!

Может ли кто-нибудь порекомендовать небольшой (но нетривиальный) пример приложения с кодом, использующим WPF, ADO.NET Data Services и модель MVVM?


person Ian Gregory    schedule 02.02.2010    source источник


Ответы (1)


Я рекомендую начинать с любого примера, в котором используется MVVM с WPF, а их много. Дело в том, что в чистой реализации MVVM не будет никакого реального кода доступа к данным — доступ к данным должен обрабатываться другим, абстрактным уровнем (см. MVVM, где разместить уровень доступа к данным?).

Работайте над созданием модели представления, которая инкапсулирует все данные и взаимодействия, необходимые для ваших (уже существующих) представлений. Очистите свой программный код и привяжите свое представление к своей модели представления.

После того, как вы это сделаете, вы можете беспокоиться о том, как получить ваши объекты в хранилище сохраняемости и из него, но фактическая работа по выполнению этого не принадлежит M, V или VM.

Я знаю, что есть множество примеров с доступом к данным прямо в модели представления или даже в модели, но они предназначены для быстрых иллюстраций, которые не требуют касательных для решения внедрения зависимостей, фасадов и т. д.

Найдите любой нетривиальный пример MVVM в WPF, и когда вы дойдете до той части, где они имеют дело непосредственно с доступом к данным, напомните себе, что в этот момент вы будете использовать абстракцию постоянства.

person Jay    schedule 03.02.2010