有一个应用程序,您可以在画布上绘制东西。例如,用户点击有黑点。但是,处理主窗口代码中事件处理程序中由canvas引发的事件对我来说只是丑陋的。所以我写了一个方法来镜像画布鼠标事件,并在事件处理函数中调用这些方法。
public partial class Window1 : Window
{
DrawingTool drawTool = new DrawingTool();
public Window1()
{
InitializeComponent();
}
private void drawingCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
drawTool.OnMouseLeftButtonDown(e);
}
}
不错,但我想更多...
问:
是否可以处理由画布在我DrawingTool类引发的事件直接,而无需定义画布事件处理程序。我想保持我的Window1代码清洁,并专注于窗口的东西,并将事件处理完全移到我的类中。
我想过从FrameworkElement派生DrawingTool,重写OnRender并在画布上透明地绘制,所以用户的点击似乎是在画布上进行的,但实际上会在DrawingTool中引发并在内部处理。这种方法适用于绘图功能(在完成绘制之后,绘制对象被添加到画布子项并从DrawingTool子项中移除),但是当涉及到选择模式或其他元素时,例如对元素的命中测试存在问题。
所以,我会感谢任何建议如何解决我的问题或解释为什么这是一个愚蠢的想法在所有:)
这是非常简单的解决方案,我没有考虑它。我正在寻找放置在风格或一些聪明的代表伏都教的事件制定者,但像往常一样,奥恰姆的剃刀派上用场了:) Thx。 – grapkulec 2009-07-03 06:48:01