动态地向WPF用户控件添加子控件,并从WinForm处理它的事件

本文关键字:控件 WinForm 并从 处理 事件 WPF 用户 添加 动态 | 更新日期: 2023-09-27 18:04:22

我有一个简单的WPF userControl名为"xNavPanel"包含一个面板。我使用"ElementHost"将这个控件添加到Winform中。我有另一个WPF UserControl名为"MainMenuButton"包含文本块。

从Winform

;我添加了许多"MainMenuButton"在"xNavPanel"动态运行时。我有一个方法在DataTable行上循环并在每一行添加"MainMenuButton"到"xNavPanel"并为每个"MainMenuButton"添加一个事件处理程序。

问题是;控件不调用处理程序!

public static void FillMenu(xNavPanel navPanel, DataTable Items)
{
    navPanel.MainPanel.Children.Clear(); //MainPanel is Panel inside UserControl
    MainMenuButton menuItem;
    foreach (DataRow dr in Items.Rows)
    {
        menuItem = SetMenuItem(dr);
        navPanel.MainPanel.Children.Add(menuItem);
    }
}
static MainMenuButton SetMenuItem(DataRow dr)
{
    MainMenuButton menuItem = new MainMenuButton();
    menuItem.Name = "MI_" + dr["FormName"].ToString();
    menuItem.MenuName.Text = dr["Name"].ToString(); //MenuName is TxBlock inside UserControl
    menuItem.MouseUp += new System.Windows.Input.MouseButtonEventHandler(menuItem_MouseUp);
    //menuItem.MouseUp += ((sender, e) => MessageBox.Show((sender as MainMenuButton).Name));
    return menuItem;
}
static void menuItem_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    MessageBox.Show((sender as MainMenuButton).Name);
}

动态地向WPF用户控件添加子控件,并从WinForm处理它的事件

我发现问题了
这个问题中的代码是100%工作的