我正在为图像后处理开发一个简单的 WPF UI。
我想创建一个可拖动的 WPF 控件以在 Canvas 上使用,大致如下所示:
两个端点椭圆都是可拖动的,连接它们的线会随着端点的移动而跟随。
现在,我知道如何实现这一点,只需将这些元素添加到 Canvas 中,然后实现必要的事件处理以使元素在拖动时移动。但是,如果我想添加其他类型的可拖动控件,这很难维护。
我想做的是将所有处理隔离到它自己的类(比如 DragLine)中,从 FrameworkElement 或 UIElement 派生。要将这个可拖动的 UI 元素添加到 Canvas 中,我将创建一个 DragLine 实例并将其添加到 Canvas.Children。我的程序的其余部分只会看到 DragLine 实例,而无需担心用于绘制新元素的线条或椭圆。
我想使用标准形状(例如椭圆)来实现线端点,而不是自己绘制所有 UI 元素。那是因为我想重用事件处理并命中测试这些已经实现的形状。
问题:从 FrameworkElement 派生是解决这个问题的正确方法吗?然后,直线和端点椭圆将只是我的新班级的视觉和逻辑子级。
如果从 FrameworkElement 派生不是推荐的方式,那么您将如何处理呢?
如果是,有没有办法简化它的实现,因为新类只能在 Canvas 上使用(并且不需要像 Grid 或 StackPanel 这样的东西很好地工作)?