所以我將一個上下文菜單(右鍵單擊菜單)附加到一個wpf listview。wpf listview右鍵單擊問題
不幸的是,當你右鍵點擊它會帶來菜單和選擇無論你的任何項目。有沒有辦法關閉這種右鍵單擊選擇行爲,同時仍然允許上下文菜單?
所以我將一個上下文菜單(右鍵單擊菜單)附加到一個wpf listview。wpf listview右鍵單擊問題
不幸的是,當你右鍵點擊它會帶來菜單和選擇無論你的任何項目。有沒有辦法關閉這種右鍵單擊選擇行爲,同時仍然允許上下文菜單?
關鍵是在正確的位置設置PreviewMouseRightButtonDown事件。你會注意到,即使沒有ContextMenu右鍵單擊ListViewItem也會選擇該項目,因此我們需要在每個項目上設置事件,而不是在ListView上。
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseRightButtonDown"
Handler="OnListViewItemPreviewMouseRightButtonDown" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item">Item 1</MenuItem>
<MenuItem Header="Menu Item">Item 2</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
</ListView>
private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("Preview MouseRightButtonDown");
e.Handled = true;
}
由於預覽事件tunneling這將阻止RightMouseButtonDown從上ListViewItems防止它們被選擇的發生,但不能防止對ListView中RightMouseButtonDown等仍然允許ContextMenu打開。
是的,這是我需要什麼。它完美的作品。謝謝! – KevinDeus 2009-07-02 16:51:37