簡體   English   中英

C#-在Winforms中處理WPF用戶控件事件

[英]C# - handling WPF usercontrol events in winforms

我在Winform中托管WPF用戶控件。 我在WPF usercontrol( UserControl1 )中使用WPF控件擴展器。 當我展開或折疊擴展器時,我的主窗體應得到通知。 如何做到這一點?

我嘗試了以下選項:

  • 在userconttol1中聲明了一個委托和事件,並試圖以mainform進行訂閱-無濟於事
  • 主要形式中使用過的childchanged事件

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM