Wpf MVVM связывает линию и пиксельные «объекты» в модели представления с Canvas в представлении, так что линии + пиксели отображаются в виде - PullRequest
0 голосов
/ 22 июля 2011

Я пытаюсь реализовать некоторые функции, используя WPF MVVM. Мой взгляд дает представление о деятельности на панели подписи. Моя модель представления связывается с фактическим оборудованием и получает события, которые в основном 1. точка, нарисованная в х, у 2. линия, проведенная от x1, y1 до x2, y2 Где координаты представляют внутренний размер «экрана» панели подписи (который может быть много тысяч много тысяч виртуальных пикселей) Моя модель представления отображает эти события пикселей / линий в соответствующие координаты на экране «стандартного» размера (чтобы независимо от устройства полученные значения всегда основывались на одной и той же высоте / ширине координат) Все достаточно просто, однако я хотел бы найти лучший способ взаимодействия между view и viewmodel.

Что я сейчас делаю. Периодически модель представления обновляет BitmapSource (в нашем «стандартном» размере) на основе событий рисования панели подписи. Представление имеет изображение, привязанное к этому BitmapSource, и поэтому оно обновляется при изменении свойства

.. все достаточно просто.

Однако мне не нравится обновлять BitmapSource в модели представления и иметь привязку таким образом. Я предпочел бы иметь в ViewModel представление «событий», которые создают подпись Таким образом, были бы Коллекции (или аналогичный «контейнер») некоторых классов / классов, представляющих различные «события» Pixel x, y и строки x1, y1, x2, y2. И в представлении будет холст, на котором будут отображаться различные пиксели / линии на основе изменений в списках сигнатурных «событий».

.. Теперь это было бы хорошо и просто, если бы я использовал подход не MVVM, так как я мог просто реагировать на события и выполнять DrawLine для событий линии и добавлять прямоугольник размером 1 пиксель для событий пикселя (учитывая, что рисование линии вызывает раздражение не давать пиксель, когда начальная и конечная координаты идентичны, вместо этого это ничего не дает). .. Но поскольку я пытаюсь сделать это более «элегантным» способом MVVM, я немного застрял. Я предполагаю, что есть некоторый основанный на шаблонах способ достижения этого, но затрудняюсь понять, как это будет сделано. Я мог бы увидеть несколько жизнеспособных решений, если бы все было просто «пиксельными» событиями, но я изо всех сил пытаюсь понять, как я могу обрабатывать пиксели и линии с помощью шаблонов (что еще хуже, поскольку я обычно не работаю на стороне «GUI») WPF (больше «бэкэнд» C #), поэтому не настолько, насколько это возможно, с тем, что можно сделать с помощью шаблонов, как люди, которые делают GUI более регулярно).

...