我是WinForms用户,所以我是WPF的新手,而且我发现我更像WinForms。 无论如何谷歌没有帮助,所以我在这里。
我已经在上下文菜单中添加了一个列表框,因为子项大约是50,所以我认为有一个列表框可能是个好主意。
所以问题就在这里,正如您在下面的屏幕截图中看到的那样,列表框没有填充菜单,背景也会突出显示。
这是我正在使用的快速代码示例。
ContextMenu cm = new ContextMenu();
MenuItem mi = new MenuItem();
mi.Header = "test";
ListBox lb = new ListBox();
lb.Height = 100;
lb.Width = 300;
TextBox tb = new TextBox();
tb.Width = 300;
for (int i = 0; i < 10; i++)
{
lb.Items.Add("item" + i);
}
mi.Items.Add(lb);
cm.Items.Add(mi);
this.ContextMenu = cm;
那么我该如何解决这个问题,还是有更好的解决方案?
答案 0 :(得分:0)
您正在添加列表框作为菜单的项。这意味着列表框本身是可选单元,而不是单个项目。这就是为什么背景突出显示的原因 - 列表框项目本身被选中,它是绘制为突出显示的项目容器。
如果您真的想在弹出窗口中嵌入ListBox,请使用Popup
类。但您基本上会重新实现ContextMenu
功能。最好的方法可能是接受ContextMenu
的限制,抱怨缺少MaxItems
属性,并且可能尝试使用自定义ControlTemplate
自己实现该属性。这里的an example用于修复高度,但该解决方案不适用于项目。