2014-11-24 25 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用於固定高度,但該解決方案不會根據項目大小。