0

首先抱歉,因为我看到另一个问题,但都是答案。和问题。不够清楚 如何从 WPF 中的用户控件引发父事件?

在我的 MainWindow.xaml 中,我有一个正确的面板

<local:RightSideContent x:Name="RightPanel"  Grid.Column="1">

所以在 MainWindow.xaml.cs 中,如果我想向这个面板发起一个事件,我编写了这样的代码:

public delegate void Event1();
public MainWindow()
{
    this.InitializeComponent();
    Event1 obj = new Event1(this.RightPanel.func);
    obj();
    // Insert code required on object creation below this point.        
}

在 RightPanel 类中,我声明了函数func

问题是:如果我在 RightPanel 类中,我如何将事件引发到 MainWindow,因为我不能写这样的东西。RightPanel.func .....

顺便说一句,我在另一个没有 xaml 文件的类中,如果我想向 UserControl 引发事件,我该怎么办?

4

1 回答 1

2

抱歉,我没有足够的代表发表评论来澄清,但正如我所看到的,你在这里尝试做三件事。

  1. 您正试图从一些不在 MainWindow 中的代码触发 MainWindow 上的事件。在这种情况下,您需要确保您有对 MainWindow 的引用,并且 MainWindow 上有一个将触发该事件的公共方法。

  2. 您希望 MainWindow 处理来自 RightPanel 的点击等。在这种情况下,您只需在 MainWindow 上放置一个 Button.Click="blah" (或任何事件)属性,它就会捕获从其下方未处理的任何按钮单击。事实上,您甚至可以在较低的位置处理它,并确保您设置 EventArgs 以使其有效地未处理,以便您也可以在较高的位置处理它。

  3. 您希望能够处理 RightPanel 中生成的自定义事件,其方式类似于您处理上面第 2 项中的按钮单击场景的方式。在这种情况下,我会引导您访问http://msdn.microsoft.com/en-us/library/ms742806.aspx,这是 WPF 中路由事件的文档,您应该能够弄清楚如何创建您的从那里拥有自己的 RoutedEvent。

于 2013-04-17T03:43:51.033 回答