模拟UIElement上的事件而不继承Windows Phone 7

时间:2011-07-10 12:55:34

标签: c# .net windows-phone-7

我有一个非常简单的要求,即我想将一个合成事件发送到UIElement,在本例中是一个Grid。我想要的只是我能够将合成事件发送到UIElement。

例如,

StackPanel myPanel;
StackPanel topPanel;

topPanel.MouseLeftButtonUp += new MouseButtonEventHandler(topPanel_MouseLeftButtonUp);

private void topPanel_MouseLeftButtonUp(object sender, MouseEventArgs args) {
    // Here I want to send the MouseLeftButtonUp event to myPanel
}

可以使用RaiseEvent,但它是受保护的事件,因此我不能在任何UIElement的实例上调用它。那么我该如何在现有类上发送合成事件呢?

P.S:我无法创建自定义继承类的原因是当前代码库太大而且我采用这种方法时所需的更改次数是不可行的。

非常感谢任何帮助。

此致 roahn

1 个答案:

答案 0 :(得分:0)

您可以将相关代码从事件处理程序移动到方法,而不是引发事件。然后,只要您想模拟按钮单击,就可以调用该方法。但是,如果要模拟按钮单击元素,则可以执行以下操作:

//Assuming myPanel_MouseLeftButtonUp is the event handler for myPanel
myPanel_MouseLeftButtonUp(null, null);