上下文:

有就是你在画布上绘制内容的应用程序。当用户点击有一个黑点,例如。但处理由画布事件处理程序在主窗口中的代码引发的事件仅仅是丑陋的我。所以我写了一个类的方法反映帆布鼠标事件和我所说的事件处理程序中的那些方法。

public partial class Window1 : Window
{
    DrawingTool drawTool = new DrawingTool();
    public Window1()
    {
        InitializeComponent();            
    }

    private void drawingCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        drawTool.OnMouseLeftButtonDown(e);
    }
}

不错,但我想更多...

问题:

是否有可能处理由画布在我DrawingTool类引发的事件的情况下直接具有限定画布事件处理程序。我想保持我的窗口1码清洁和重点窗口的东西和移动的事件完全处理了我的班。

我想过自FrameworkElement派生DrawingTool,覆盖的OnRender并透明地绘制在画布上,以便用户的点击似乎是在画布上,但实际上取得的进展将在DrawingTool提高和内部处理。这种方法适用于绘图的功能(后绘图完成绘制的对象被添加到画布儿童和除去从DrawingTool儿童),但是当涉及到选择模式或其他人存在与例如元件的命中测试的问题。

所以,我会感谢任何建议如何解决我的问题或解释为什么这是一个愚蠢的想法都:)

有帮助吗?

解决方案

就暴露私人控制领域的公共属性,当你有窗口1的实例,你可以做

Window1.DrawingCanvas.MouseLeftButtonDown += YourHandlerMethod;

其他提示

我不知道我是否有你的问题吧,我也只能用WPF一点点打,而是创建一个包含你的画布,用户控制和处理的鼠标和绘图那里怎么样?这可以命名DrawingControl或类似物。

这样,你能有包含在表示控件类的绘制代码。你可能想给新的用户控件的属性允许访问“内部”的画布。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top