2013-03-18 66 views
3

我有一个名为“xNavPanel”的简单WPF userControl包含一个面板。 我使用“ElementHost”将此控件添加到Winform中。 我有另一个名为“MainMenuButton”的WPF UserControl包含文本块。向WPF UserControl动态添加子项并处理来自WinForm的事件

From Winform;我在运行时动态地在“xNavPanel”中添加了许多“MainMenuButton”。 我有方法循环数据表行 和foreach行添加“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); 
} 

回答

0

我发现这个问题
在这个问题上的代码工作100%
问题是别的东西不包括在此代码。