2014-11-24 26 views
0

我是WinForms用户,所以我对WPF很陌生,再加上我发现我更像WinForms一样使用它。 无论如何谷歌没有帮助,所以我在这里。ContextMenu中的列表框

我已经添加一个列表框到上下文菜单,因为子项目大约是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

那么,如何解决这个问题,或者是有没有更好的解决办法?

+0

删除所有这些,并使用适当的XAML。 – 2014-11-24 20:07:40

回答

0

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

如果您真的想要在弹出框中嵌入列表框,请使用Popup类。但你基本上会重新实现ContextMenu的功能。最好的办法可能是接受ContextMenu的限制,抱怨缺少MaxItems财产,也许尝试使用自定义ControlTemplate自己实现该财产。这里的an example用于固定高度,但该解决方案不会根据项目大小。