从嵌套用户控件捕获事件

时间:2011-01-23 18:19:25

标签: c# wpf events

我有一些用户控件。层次结构如下:

A包含B
B包含C

在我的C控件中,我有一个按钮。当我点击它想要我的活动

public event EventHandler Print;

通过raise然后我想控制A来捕获这个事件。我怎么能这样做?

编辑1:
我想在User Control C的ViewModel上提升我的事件

3 个答案:

答案 0 :(得分:2)

有两个主题可以帮助您满足您的需求:

CommandingRouted Events

这两种机制都是专门为wpf的层次结构而构建的。

阅读两者,它们将帮助您的wpf体验无法估量。

编辑:更有帮助的东西。将Button.Click =“”放在要捕获事件的控件上。您可以使用按钮的Tag属性来存储标识信息,以便事件处理程序知道单击了正确的按钮。

<Grid Button.Click="Button_ClickHandler">
    <Button Tag="PrintButton/>
</Grid>

在用户控件的代码中,您将需要名为Button_ClickHandler的处理程序。

上述方法使用路由器事件。我真的建议使用命令。

答案 1 :(得分:0)

我想你想看看bubbling events

更新:我没有看到wpf标签,你应该看routed events

答案 2 :(得分:0)

您可以像这样包装事件:

class B
{
    private A a;

    public event EventHandler Print
    {
        add { a.Print += value; }
        remove { a.Print -= value; }
    }
}