有一個應用程序,您可以在畫布上繪製東西。例如,用戶點擊有黑點。但是,處理主窗口代碼中事件處理程序中由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