WPF,C#:如何处理从动态创建的用户控件引发的事件
基本上,我的程序有两个主要组件。WPF,C#:如何处理从动态创建的用户控件引发的事件,c#,wpf,dynamic,user-controls,event-handling,C#,Wpf,Dynamic,User Controls,Event Handling,基本上,我的程序有两个主要组件。 1) 我有一个主窗口,其中包含动态创建的用户控件。 2) 两种不同类型的用户控件(ctr1和ctr2) 我希望能够按下ctr1上的一个按钮,让它弹出一个事件,并让主窗口处理该事件,从而创建另一个ctr2实例。我面临的问题是,老实说,我找不到任何好的资源来提供如何实现这一点的实际代码示例 在ctr1中,我有: public event RoutedEventHandler MyEvent { add { AddHandler(MyE
1) 我有一个主窗口,其中包含动态创建的用户控件。
2) 两种不同类型的用户控件(ctr1和ctr2)
我希望能够按下ctr1上的一个按钮,让它弹出一个事件,并让主窗口处理该事件,从而创建另一个ctr2实例。我面临的问题是,老实说,我找不到任何好的资源来提供如何实现这一点的实际代码示例 在ctr1中,我有:
public event RoutedEventHandler MyEvent
{
add { AddHandler(MyEvent_randomName, value); }
remove { RemoveHandler(MyEvent_randomName, value); }
}
void RaiseMyEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(ctr1.MyEvent_randomName);
RaiseEvent(newEventArgs);
}
protected override void RaiseEvent_click()
{
RaiseMyEvent();
}
对于我的主窗口,我有:
public MainWindow()
{
InitializeComponent();
MainWindow.AddHandler(ctr1.MyEvent_randomName, new RoutedEventHandler(MyButtonHandler));
}
void MyButtonHandler(object sender, RoutedEventArgs e)
{
MessageBox.Show("My New Clicked Event");
}
我遇到麻烦的地方是“MainWindow.AddHandler(ctr1.MyEvent_random);我不断收到错误:
非静态字段、方法或属性“System.Windows.UIElement.AddHandler(System.Windows.RouteEvent,System.Delegate)”需要对象引用 如果这是一个非常初级的问题,我很抱歉,但我几天前才开始学习WPF和C,我还没有找到一个好的在线教程,可以清楚地解释所有内容。检查错误: 非静态字段、方法或对象需要对象引用 财产 'System.Windows.UIElement.AddHandler(System.Windows.RouteEvent, “系统代理” 您正在尝试静态访问该方法: MainWindow.AddHandler 当你应该做的时候:
AddHandler . . .
顺便说一句,你可能想看看ICommand和MVVM来做你想做的事情,但是作为一个初学者,你现在有很多东西要学;)你可以尝试以下方法:
在ctr1中
public event EventHandler Ctrl1ClickEvent;
当您按下ctrl1中的按钮时
Ctrl1ClickEvent(this, EventArgs.Empty);
在主窗口中
public MainWindow()
{
InitializeComponent();
this.ctrl1.Ctrl1ClickEvent += ctrl1ClickHandler;
}
private void ctrl1ClickHandler(object sender, EventArgs e)
{
MessageBox.Show("My New Clicked Event");
}
我上面的代码是一个快速复制粘贴。实际上,我有点尴尬,因为我没有正确地查看它。“RaiseEvent_click()”应该是“OnClick()”。。。。。