Инкапсуляция динамического элемента пользовательского интерфейса мыши в приложении WPF - PullRequest
0 голосов
/ 19 ноября 2018

Я занимаюсь разработкой приложения C # WPF с использованием шаблона MVVM

В моем приложении пользователь с помощью мыши (или сенсорного экрана) устанавливает значения смещения для Pan-Tilt Motor. Поскольку движение должно быть немного легким, я решил создать вспомогательный элемент пользовательского интерфейса, который в настоящее время выглядит следующим образом:

screenshot

Я хочу, чтобы он выглядел красиво и стильно, чтобы значения не были затемнены или пересекались с другими строками:

obscured or intersected with other lines

Но в то же время я хочу придерживаться шаблона MVVM, и такое поведение, хотя и не сложное для реализации само по себе, требует большого количества привязок, логики и триггеров. Это сильно мешает моему XAML и View Model, так что вот мой вопрос:

Каков общий способ / наилучшая практика инкапсуляции такого элемента (который в основном представляет собой сложную динамическую фигуру) в некоторую абстрактную форму, скрывающую все не относящееся к основной логике приложения внутри него?

Желаемое решение будет выглядеть примерно так:

<canvas>
   <i:Interaction.Triggers>
      <!--MouseUp, MouseDown, MouseMove Commands...-->
   </i:Interaction.Triggers>

   <i:Interaction.Behaviors>
      <!--Getting Mouse X and Y values...-->
   </i:Interaction.Behaviors>

   <MouseUI MouseUiClass="{Binding MouseUiClass}"/>
     or
   <MouseUI Start="{Binding MouseUiClass.Start}"
            End="{Binding MouseUiClass.End}"
            IsFinished="{Binding MouseUiClass.IsFinished}"/>
</canvas>

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

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