在我的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引发一个事件,我该怎么办?
答案 0 :(得分:2)
很抱歉,我没有足够的代表发表评论澄清,但正如我所看到的,你在这里尝试做三件事。
您正试图在MainWindow上触发一个事件,该事件来自一些不在MainWindow中的代码。在这种情况下,您需要确保您有对MainWindow的引用,并且MainWindow上有一个公共方法将触发该事件。
您希望MainWindow处理来自RightPanel的点击等。在这种情况下,您只需在MainWindow上放置一个Button.Click =“blah”(或任何事件)属性,它将捕获下面没有处理的任何按钮点击。实际上你甚至可以降低它的速度,并确保你设置EventArgs以使其有效地未处理,这样你就可以在更高的位置处理它。
您希望能够处理在RightPanel中生成的自定义事件,其方式与上面第2项中按钮单击方案的方式类似。在这种情况下,我会引导你到http://msdn.microsoft.com/en-us/library/ms742806.aspx这是WPF中路由事件的文档,你应该能够从那里找出如何创建自己的RoutedEvent。