【问题标题】:Raise event in a User Control to MainWindow将用户控件中的事件引发到 MainWindow
【发布时间】:2013-04-17 11:49:42
【问题描述】:

首先抱歉,因为我看到另一个问题,但都是答案。和问题。不够清楚 How can I raise a parent event from a user control in 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 引发事件,我该怎么办?

【问题讨论】:

标签: c# wpf


【解决方案1】:

抱歉,我没有足够的代表发表评论来澄清,但在我看来,您在这里尝试做三件可能的事情。

  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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    相关资源
    最近更新 更多