Я занимаюсь разработкой приложения C # WPF с использованием шаблона MVVM
В моем приложении пользователь с помощью мыши (или сенсорного экрана) устанавливает значения смещения для Pan-Tilt Motor. Поскольку движение должно быть немного легким, я решил создать вспомогательный элемент пользовательского интерфейса, который в настоящее время выглядит следующим образом:
![screenshot](https://i.stack.imgur.com/5mdjA.png)
Я хочу, чтобы он выглядел красиво и стильно, чтобы значения не были затемнены или пересекались с другими строками:
![obscured or intersected with other lines](https://i.stack.imgur.com/VmQdt.png)
Но в то же время я хочу придерживаться шаблона 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
, но я изо всех сил пытаюсь понять, как правильно его отобразить, потому что динамически изменяет размеры, а начальная и конечная точки могут быть размещены в любой части холста.