【问题标题】:Winforms host WPF control eventsWinforms 托管 WPF 控件事件
【发布时间】:2015-11-17 12:49:53
【问题描述】:

我正在尝试在我的 winform 上托管一个 wpf 控件 (gridview)。

我正在使用 elementHost 在我的 winform 上创建 wpf 控件。

每当我想向我的 wpf 控件添加行时,如何创建一个事件?

【问题讨论】:

  • 到目前为止你有没有尝试过的代码?

标签: wpf winforms events elementhost


【解决方案1】:

将您的网格视图包装在用户控件中并处理用户控件中的事件。请注意,当您托管 wpf 控件时,不会调用某些事件。适用于我的解决方案:在加载时和 elementhost 获得焦点时将焦点设置到您的用户控件

【讨论】:

    【解决方案2】:

    在Winforms中订阅WPF控件的事件与其他事件相同。只需获取 WPF 控件实例并将代码用作:

    wpfbutton1.Click += new RoutedEventHandler(wpfbutton1_Click);     
    
    void wpfbutton1_Click(object sender, RoutedEventArgs e)
    {
       throw new NotImplementedException();
    }
    

    示例代码:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ElementHost host = new ElementHost() { Dock = DockStyle.Fill };
            this.Controls.Add(host);
    
            System.Windows.Controls.Button wpfButton = 
                new System.Windows.Controls.Button() { Content = "WPF Button" };
            host.Child = wpfButton;
    
            wpfButton.Click += new         System.Windows.RoutedEventHandler(wpfButton_Click);
        }
    
        void wpfButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            MessageBox.Show("Button is clicked");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 2012-03-27
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多