我有一個用戶控制是這樣的:如何在WPF中使用ContextMenu UserControl?
<UserControl x:Class="MyApp.UserControls.MyContextMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
ContextMenuOpening="OnContextMenuOpening"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.ContextMenu>
<ContextMenu>
...
</ContextMenu>
</UserControl.ContextMenu>
</UserControl>
我的問題是:我怎麼使用上下文菜單,就像一個數據網格:
<DataGrid ContextMenu="{usercontrols:MyContextMenu}"
遺憾的是不工作,因爲指定的值不正確,預計爲ContextMenu
。
注意:我需要在幾個地方重複使用我的上下文菜單,所以我把它放在它自己的文件中。另外,我需要能夠聽OnContextMenuOpening
事件,因爲在打開的菜單中需要做的關於菜餚的一些工作,而不是解僱上下文菜單黯然事件:http://connect.microsoft.com/VisualStudio/feedback/details/353112/contextmenu-opening-event-doesnt-fire-properly
「文本菜單本身是一個FrameworkElement派生類,但此 事件不會從正在打開的上下文菜單中產生,作爲 源。事件由作爲屬性「擁有」上下文 菜單的元素引發,並且僅在用戶嘗試在UI中打開一個 上下文菜單。「
此事件問題是我爲用戶控件放置菜單的原因 - 以便用戶控件可以獲取事件並完成工作。
更新:我試圖把它作爲一個根元素和擴展的上下文菜單:
和代碼隱藏:
但我得到:ContextMenu cannot have a logical or visual parent
。
我很樂意提供建議。但是,你的工作不起作用,因爲「ContextMenu不能有邏輯或可視的父母」。您不能將'ContextMenu'定義爲根元素。 – Tower
作爲什麼根元素?我只是從它衍生出來的,它的工作原理。 – Clemens
不適合我。它抱怨'ContextMenu'不能有一個邏輯的或可視化的父親。即,這意味着上下文菜單隻能用於UI元素的ContextMenu屬性值,而不能用作元素。這也有另一個問題:我不能聽'OnContextMenuOpening'事件。 – Tower