Взаимодействие MVVM, Catel и графического пользовательского интерфейса

введите здесь описание изображения

Я работаю над графическим приложением, в котором пользователь щелкает FrameworkElements и перетаскивает их на холсте. Он работает в коде программной части, но вы хотите обновить его с помощью Catel/MVVM.

Мой общий вопрос: в этом приложении ViewModel должен «знать» о представлении, потому что он должен знать о MousePosition относительно «LayourRoot», чтобы обновить положение объектов, что противоречит шаблону MVVM. Было бы лучше обрабатывать все взаимодействия Mouse/FrameworkElement в коде позади и любые данные/FrameworkElement со свойствами MVVM. (Под data/FrameworkElement я подразумеваю хранение определенных значений свойств, таких как Canvas.Top, Canvas.Left, Fill и т. д., в хранилище данных.)

Любые советы по общему подходу?


person Johnny Beatniks    schedule 30.07.2014    source источник
comment
См. Мой пример пользовательского интерфейса, похожего на Canvas, на основе MVVM с перетаскиваемыми элементами.   -  person Federico Berasategui    schedule 30.07.2014
comment
Хороший материал, например, HighCore   -  person Johnny Beatniks    schedule 31.07.2014


Ответы (1)


Перетаскивание относится к пользовательскому интерфейсу и поэтому должно находиться в пользовательском интерфейсе.

MVVM не означает «отсутствие кода программной части». Это означает отделение бизнес-логики от задач пользовательского интерфейса.

Представление должно обрабатывать перетаскивание, а одно отброшенное должно обновлять информацию о местоположении в модели объекта.

person Community    schedule 30.07.2014