2010-02-12 147 views
5

好吧,希望這很簡單,但由於某種原因,我找不到直接的答案,我對WPF還不太瞭解,但還不知道如何去做。WPF contextmenu和ListView

我有一個listview,它被綁定到一個可觀察的對象集合來顯示。我想有一個選項的上下文菜單。上下文菜單中的選項與列表中被點擊的特定對象(如刪除,導出等)相關。

所以我需要用戶在我的列表視圖中單擊的對象作爲參數傳遞給上下文菜單執行的命令。

我該怎麼做?

編輯:我應該提到,我寧願一個解決方案,主要是(如果不是完全)xaml - 我試圖避免在代碼隱藏的重要代碼。如果這是唯一的辦法,雖然...

更多編輯:更多的細節,我忘記提及這是重要的。我想要執行的命令在綁定到我的用戶控件的數據上下文的對象上,它不在列表視圖中的對象上。因此,我需要將列表視圖的項目上下文菜單綁定到用戶控件的數據上下文中的命令,並將列表視圖項作爲參數傳遞到該命令中。

回答

4

這取決於您的ContextMenu是單個項目的模板的一部分,還是作爲整體附加到ListBox。

如果要連接您的ContextMenu在使用一個DataTemplate列表中的項目(這通常是這樣做的最佳方式),在MenuItemDataContext已經設定所有你需要做的是:

<MenuItem ... CommandParameter="{Binding}" /> 

在另一方面,如果你的ContextMenu連接到ListBox作爲一個整體,你需要訪問ListBoxSelectedItem屬性:

<MenuItem ... CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor,ListBox,1}} />