3

「xNavPanel」という名前のシンプルな WPF userControl があり、パネルが含まれています。「ElementHost」を使用して、このコントロールを Winform に追加しました。「MainMenuButton」と呼ばれる別の WPF UserControl にはテキストブロックが含まれています。

Winform から; 「xNavPanel」に多くの「MainMenuButton」を実行時に動的に追加します。DataTable 行と 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);
}
4

1 に答える 1

0

問題が見つかりました
この質問のコードは100%機能
しています。問題は、このコードに含まれていない他の何かにありました。

于 2013-03-18T22:37:59.540 に答える