我想在用戶左鍵單擊GridView的列標題時顯示上下文菜單。這裏是我到目前爲止的代碼:WPF在左擊時顯示GridView列標題的上下文菜單
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding}">
<GridViewColumnHeader
Content="Customer"
Click="Header_Click"
>
<GridViewColumnHeader.ContextMenu>
<ContextMenu Name="ContextMenu">
<MenuItem Header="Sort by Customer" />
<MenuItem Header="Sort by Address" />
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
</GridView>
而後面的代碼:
private void Header_Click(object sender, RoutedEventArgs e)
{
ContextMenu.IsOpen = true;
e.Handled = true;
}
注意的GridView是由有GridViewColumnHeader.ClickEvent
事件偵聽器定製的ListView類託管。但是,如果在代碼隱藏的事件偵聽器上設置e.Handled
,則會阻止事件向上冒泡。
我的問題是,當單擊標題時,上下文菜單快速出現在屏幕上,然後關閉。我相信標題正在失去焦點,這就是上下文菜單關閉的原因。即使將StaysOpen
屬性設置爲true
也不能解決問題。
另請注意,右鍵單擊列標題時,上下文菜單的行爲將正確。
因此,任何建議如何停止上下文菜單關閉?
是的,非常感謝!看起來像將事件設置爲'MouseDown'(或'MouseUp')而不是'Click'就行了。 – OsQu