Основная проблема в вашем вопросе - запутывание требований ваших пользователей (манипулирование объектами, которые представлены прямоугольниками и эллипсами (я только догадываюсь)) с деталями реализации (добавление Rectangle
s и Ellipse
s к Canvas
эс).
Опять же, различные обязанности в шаблоне MVVM:
View
Переведите ViewModel в пиксели и преобразуйте входные события в вызовы методов ViewModel.
Это будут фактические компоненты Silverlight (Rectangle
, Ellipse
, Canvas
), привязанные к их DataContext
и имеющие несколько очень маленьких обработчиков событий или Command
s или что-то еще.
Модель
Хранение данных и бизнес-логики в зависимости от предметной области.
Это представляет "математические" прямоугольники и эллипсы, которые рисуют ваши пользователи.
ViewModel
Уточните модель ориентированным на пользовательский интерфейс и часто зависящим от конкретного случая образом.
Здесь вы храните информацию о переходных процессах, таких как «текущий выбранный объект», которые относятся к конкретному представлению, но не являются атрибутами концепции базовой модели.
Прочтите мой блог для подробнее о моих взглядах на MVVM .