在winforms中处理WPF用户控件事件
本文关键字:用户 控件 事件 WPF 处理 winforms | 更新日期: 2023-09-27 18:05:02
我在winform中托管一个WPF用户控件。我在WPF用户控制(UserControl1)中使用WPF控制扩展器。当我展开或折叠扩展器时,我的主窗体应该得到通知。如何做到这一点?
我尝试了以下选项:
- 在usercontrol1中声明了一个委托和事件,并试图在mainform中订阅-没有帮助
- 在mainform中使用childchanged事件
WPF用户控制名- usercontrol1主表格名称-表格1
this.elementHost1.ChildChanged += new System.EventHandler<System.Windows.Forms.Integration.ChildChangedEventArgs>(this.elementHost1_ChildChanged);//form1 designer
private void elementHost1_ChildChanged(object sender, ChildChangedEventArgs e)
{
var ctr = (elementHost1.Child as UserControl1);
if (ctr == null)
return;
ctr.isCollapsed+=new UserControl1.expandedDel(ctr_isCollapsed);
}
void ctr_isCollapsed(object sender, System.Windows.RoutedEventArgs e)
{
throw new NotImplementedException();
}
WPF usercontrol Winforms互操作-在Winforms中处理WPF事件
要求:WPF usercontrol(UserControl1)包含Expander(expander1), Expander包含3个单选按钮和WPF用户控件托管在winform(Form1)当usercontrol主表单中的单选按钮发生变化时,应该收到通知,并根据选择在主表单中弹出一些控件
在usercontrol1.xaml.cs代码:
public delegate void ucRadioButtonHandler(object sender, **ucButtonEventArgs** e);
public event ucRadioButtonHandler onRadioButtonClick;
private void radioButton1_Checked(object sender, RoutedEventArgs e)
{
if (onRadioButtonClick != null)
{
onRadioButtonClick(sender, new ucButtonEventArgs());
}
}
ucButtonEventArgs是在同一个usercontrol. example .cs中定义的类
public partial class ucButtonEventArgs : EventArgs
{
public ucButtonEventArgs()
{
}
}
现在在MainForm Form1
public Form1()
{
InitializeComponent();
userControl11.onRadioButtonClick += new WpfControlLibrary1.UserControl1.ucRadioButtonHandler(userControl11_onRadioButtonClick);
}
void userControl11_onRadioButtonClick(object sender, WpfControlLibrary1.ucButtonEventArgs e)
{
System.Windows.Controls.RadioButton rb = (System.Windows.Controls.RadioButton)sender;
MessageBox.Show(rb.Content + " Selected!!!!!!!!");
}