我正在开发一个用于图像后处理的简单WPF UI。
我想创建一个可拖动的WPF控件,可用于Canvas上,大致如下:
两个端点椭圆都可以拖动,连接它们的线会随着端点移动而移动。
现在,我知道如何通过将这些元素添加到Canvas中,然后实现必要的事件处理来实现此目的。但是,如果我想要添加其他类型的可拖动控件,这样很难维护。
我想做的是将所有处理隔离到自己的类中(例如DragLine),从FrameworkElement或UIElement派生。要将此可拖动的UI元素添加到Canvas中,我将创建DragLine的实例并将其添加到Canvas.Children中。我的程序的其余部分只会看到DragLine实例,不需要担心用于绘制新元素的线条或椭圆。
我希望使用标准形状(如椭圆)来实现线条端点,而不是自己绘制所有UI元素。这是因为我想重用这些形状已经实现的事件处理和命中测试。问题:从FrameworkElement派生是否正确?线条和端点椭圆将成为我的新类的可视和逻辑子项。
如果从FrameworkElement派生不是推荐的方法,您会选择哪种方法?
如果是,是否有一种简化其实现的方法,考虑到新类仅在Canvas上使用(不需要像Grid或StackPanel那样工作得很好)?