![](/img/trans.png)
[英]Make WinForms UserControl appear in Toolbox for WPF Visual C# project?
[英]C# - handling WPF usercontrol events in winforms
我在Winform中托管WPF用戶控件。 我在WPF usercontrol( UserControl1 )中使用WPF控件擴展器。 當我展開或折疊擴展器時,我的主窗體應得到通知。 如何做到這一點?
我嘗試了以下選項:
WPF用戶控件名稱-usercontrol1主窗體名稱-主窗體名稱中的Form 1托管用戶控件-elementHost1
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用戶控件Winforms互操作-在Winforms中處理WPF事件
要求:WPF usercontrol(UserControl1)包含Expander(expander1),expander包含3個單選按鈕,當在usercontrol主表單中更改單選按鈕時,應通知Winform(Form1)中托管的WPF usercontrl,並應根據選擇在主表單中彈出一些控件
代碼:在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.xaml.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!!!!!!!!");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.