gpt4 book ai didi

c# - 将子项动态添加到 WPF UserControl 并处理来自 WinForm 的事件

转载 作者:行者123 更新时间:2023-11-30 18:35:06 28 4
gpt4 key购买 nike

我有一个名为“xNavPanel”的简单 WPF 用户控件,其中包含一个面板。我使用“ElementHost”将此控件添加到 Winform 中。我有另一个名为“MainMenuButton”的 WPF UserControl 包含文本 block 。

来自Winform;我在运行时动态地在“xNavPanel”中添加了许多“MainMenuButton”。我有循环遍历 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);
}

最佳答案

我发现了问题
此问题中的代码 100% 有效
问题在于此代码中未包含的其他内容。

关于c# - 将子项动态添加到 WPF UserControl 并处理来自 WinForm 的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com