ContextMenu中的列表框

时间:2014-11-24 16:18:13

标签: c# wpf listbox

我是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;

Screenshot

那么我该如何解决这个问题,还是有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您正在添加列表框作为菜单的。这意味着列表框本身是可选单元,而不是单个项目。这就是为什么背景突出显示的原因 - 列表框项目本身被选中,它是绘制为突出显示的项目容器。

如果您真的想在弹出窗口中嵌入ListBox,请使用Popup类。但您基本上会重新实现ContextMenu功能。最好的方法可能是接受ContextMenu的限制,抱怨缺少MaxItems属性,并且可能尝试使用自定义ControlTemplate自己实现该属性。这里的an example用于修复高度,但该解决方案不适用于项目。