wpf 代碼獲取contextmenu_[C#]?轉:在WPF里面獲取右鍵彈出菜單(ContextMenu)的鼠標點擊源(Owner)控件...

WPF的ContextMenu沒有類似WinForm里面ContextMenu.SourceControl的概念,但是你可以通過ContextMenuService的GetPlacementTarget方法來獲取類似的效果。

很多時候,我們會希望在WPF的資源文件里面定義一個通用的右鍵彈出菜單,然后將這個菜單通過定義在各個控件的ContextMenu屬性來設置用戶右擊控件時彈出菜單。然而因為WPF的一些設計不足,你不能在右鍵菜單的點擊事件處理函數中獲知右鍵菜單彈出時,鼠標的焦點是在哪個控件上?

例如下面的代碼:

XAML代碼:

<Window.Resources>

<ContextMenux:Key="sampleContextMenu">

<MenuItemHeader="MenuItem1"Click="WhoBringMeOut"/>

ContextMenu>

...

Window.Resources>

<TreeView>

<TreeViewItemHeader="TreeViewItem1"ContextMenu="{StaticResource

sampleContextMenu}"/>

<TreeViewItemHeader="TreeViewItem2"ContextMenu="{StaticResource

sampleContextMenu}"/>

<TreeViewItemHeader="TreeViewItem3"/>

TreeView>

<DockPanelContextMenu="{StaticResource

sampleContextMenu}">

<ImageSource="img1.ico"/>

<TextBlockText="QuicklyAccess"/>

DockPanel>

C#代碼:

public?void?WhoBringMeOut(object?sender,

RoutedEventArgs e)

{

//

sender的值是被點擊的MenuItem,而不是觸發右鍵菜單

//彈出的控件,例如TreeViewItem,或者是DockPanel

}

這種情況下你可以通過ContextMenuService的GetPlacementTarget方法來獲取類似的效果。

然而,看起來WPF在MenuItem.Click事件處理上面有一點bug,就是你不能通過(sender as

MenuItem).ContextMenu

獲取到點擊的右鍵菜單,只好求助于LogicalTreeHelper.GetParent方法了,

使用下面的方法獲取到ContextMenu的Owner:?ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(sender

as MenuItem))

也就是說上面的C#代碼改成下面的樣子就可以了:

public?void?WhoBringMeOut(object?sender,

RoutedEventArgs e)

{

ContextMenuService.GetPlacementTarget(

LogicalTreeHelper.GetParent(sender?as?MenuItem));

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534711.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534711.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534711.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2021遼寧高考藝考成績查詢系統入口,2019年遼寧省藝考統考成績查詢官方入口

2019年遼寧省普通高等學校招生美術類、音樂舞蹈類專業統考成績已經公布。考生可以通過以下方式查詢美術類、音樂舞蹈類專業統考成績&#xff1a;一、美術類專業統考合格分數線美術類本科專業統考合格分數線為185分&#xff0c;且3門科目中至少有2門各不低于60分;專科專業統考合…

python出現traceback什么意思_python-異常處理 traceback獲取詳細異常

直接來幾個簡單的栗子:try:100/0except Exception as err:print(err)輸出結果:division by zero只知道是報了這個錯&#xff0c;卻不知道在哪個文件哪個函數哪一行報的錯。使用 traceback 模塊importtracebacktry:100/0exceptException as e:traceback.print_exc()輸出結果:Tra…

2020輔警考試計算機知識題,2019年輔警考試公共基礎知識題庫:計算機知識習題(二)...

中公招警考試網為考生提供2019年輔警考試計算機基礎知識題目及答案解析&#xff0c;幫助考生順利備考輔警考試。輔警考試備考周期短、復習范圍大&#xff0c;中公小編建議考生充分利用各個輔警考試題進行練習。1. 如果要查找Glossary.txt, Glossary.doc 和Glossy.doc 三個文件&…

用python程序編寫二元多項式_Python多項式回歸的實現方法

多項式回歸是一種線性回歸形式&#xff0c;其中自變量x和因變量y之間的關系被建模為n次多項式。多項式回歸擬合x的值與y的相應條件均值之間的非線性關系&#xff0c;表示為E(y | x)為什么多項式回歸&#xff1a;研究人員假設的某些關系是曲線的。顯然&#xff0c;這種類型的案例…

微型計算機硬盤為什么要分區,為什么懂電腦的人,都說硬盤不需要分區?看完你就知道了...

你的電腦有多少個分區呢&#xff1f;當你拿到一臺新電腦的時候&#xff0c;一般只能看到一個系統分區。這時候就會開始進行系統分區&#xff0c;將硬盤分為C、D、E等等盤符&#xff0c;用途也各不相同&#xff0c;系統盤&#xff0c;資料盤&#xff0c;娛樂盤等等。似乎所有人都…

字符串固定長度 易語言_易語言字符串操作源碼

易語言字符串操作源碼系統結構:字符串_取長度,字符串_取中間,字符串_取左邊,字符串_取右邊,字符串_替換,到寬字符,到多字節,取文本數據地址,取字節集數據地址,MultiByteToWideChar,WideCharToMultiByte,程序集1| || |------ _啟動子程序| || |------ _臨時子程序| || |程…

php imagecreatefromjpeg圖片太大_PHP圖像處理技術及應用

基本圖像處理技術1體理解&#xff1a;1&#xff0c;創建(得到)一個圖像資源(resource)——它相當于一個“畫板”(畫布)2&#xff0c;在該畫板上進行“繪制圖線”&#xff1b;3&#xff0c;將該畫布輸出到網頁上顯示出來&#xff0c;或保存為圖片文件。圖像處理技術&#xff0c;…

html中所有的標簽,HTML中的所有標簽及其做用!

用戶提問,表示該文件為HTML文件 ,包含文件的標題,使用的腳本,樣式定義等 ---,包含文件的標題,標題出現在瀏覽器標題欄中 ,的結束標志 ,放置瀏覽器中顯示信息的所有標志和屬性,其中內容在瀏覽器中顯示. ,的結束標志 ,的結束標志 其它主要標簽,以下所有標志...推薦答案,表示該文件…

linux中如何復制文件并重命名_linux 下怎么復制一個文件到另外一個目錄并且重命名...

在home目錄下有wwwroot目錄,wwwroot下有sinozzz目錄,即/home/wwwroot/sinozzz 一、目錄創建 在/home/wwwroot目錄下新建一個sinozzz123的文件夾 mkdir /home/wwwroot/sinozzz123 二、目錄復制 1。 把/home/wwwroot/sinozzz里面的文件和文件夾等復制到home/wwwroot/sinozzz123…

年金系數用計算機怎么算,年金系數是什么?怎么計算?

【導讀】年金是相等時間間隔收到或支付相同金額的款項&#xff0c;如年末收到養老金1萬元即為年金。年金現值是按市場利率把發生期收到的各期年金利息折成現值匯總&#xff0c;現值系數是按利率每期收付一元錢折成現在的價值。年金系數是什么&#xff1f;首先說什么是年金&…

mf模型 svd++_序列推薦模型(一): FPMC

Factorizing Personalized Markov Chains for Next-Basket Recommendation摘要和介紹這篇文章發表于 WWW2010&#xff0c;當時主流的推薦方法是MF和MCMF(Matrix Factorization) : 用于建模用戶與物品的偏好。給定已知用戶和物品的交互&#xff0c;來預測矩陣中其他未知位置的用…

科學計算機怎么算四分位數,83939數理分析網

【www.shanpow.com--節日作文】第一篇83939數理分析網:手機號碼數理分析手機號碼數理分析手機是大家日常生活中最常用的東西&#xff0c;手機號碼也暗喻數理卦象玄機&#xff0c;有些人甚至比姓名更看重&#xff0c;畢竟換手機號碼比改名字簡單。互聯網上有很多可以測試的網站&…

使用python讀取iphone文件_如何在連接的iPhone上用Python從windows7訪問照片?

當我將iPhone連接到windows7系統時&#xff0c;Windows資源管理器會打開DCIM內容的虛擬文件夾。我可以通過Pywin32(218)訪問shell庫接口&#xff0c;如下所述&#xff1a;Can I use library abstractions in python?給定在Windows資源管理器中工作的面向用戶的編輯路徑(SIGDN_…

離人愁有用計算機怎么寫歌詞,離人愁歌詞是什么意思 今兩股癢癢什么意思

最近《離人愁》這首富含古風的歌曲可是大火&#xff0c;既然是古風&#xff0c;里邊的歌詞也是讓大多網友不理解其中表達什么意思&#xff0c;進而不能好好體會作者寫這首歌的意圖&#xff0c;其實每個人對于這首歌曲還是有很多自己的理解的&#xff0c;現在小編就來介紹這首歌…

手機耗電統計app_華為手機有哪些功能關掉比較好?

閱讀本文前&#xff0c;請您先點擊上面的藍色字體“野趣說”&#xff0c;再點擊“關注”&#xff0c;這樣您就可以繼續免費收到文章了。每天都有分享&#xff0c;完全是免費訂閱&#xff0c;請放心關注&#xff01;現在的手機使用一年半左右就會出現卡頓的情況&#xff0c;這也…

北京航空航天大學計算機科學與工程系,北航鄭征主頁 北京航空航天大學教師個人主頁系統...

[1].教育部學位與研究生教育發展中心評審專家[2].IEEE Transactions on Dependable and Secure Computing客座編輯[3].國際SCI期刊Knolwedge-based Systems副主編[4].國際會議ISSRE2020程序委員會共同主席(International Symposium on Software Reliability Engineering-CCF B)…

3種團隊分組適應項目_團隊類型

展開全部根據團隊存在的目的和擁有自主權的大小可將團隊分成四種類型&#xff1a;問題解決型團隊、自我32313133353236313431303231363533e59b9ee7ad9431333431363635管理型團隊、多功能型團隊、虛擬型團隊。1、問題解決型團隊問題解決型團隊是指組織成員就如何改進工作程序、方…

制作html彈窗,js制作一個簡單的div彈窗:

/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">彈出層.black_overlay{display: none;position: absolute;top: 0%;left: 0%;width: 100%;height: 100%;background-color: black;z-index:1001;-moz-opacity: 0.8;opacity:.80;filter: alpha(op…

太原冶金技師學院計算機系,山西冶金技師學院2021年招生簡章

山西冶金技師學院2021年招生簡章隨著考試的落幕&#xff0c;很多學生都比較關注一些學校的招生信息&#xff0c;其中山西冶金技師學院就受到很多學生關注&#xff0c;學校的專業專業設置也比較多&#xff0c;那么在今年&#xff0c;該學校的招生簡章有什么要求呢?學校的專業招…

netty獲取玩家chanel_Netty4.X 獲取客戶端IP

最近使用netty-4.0.23.Final 版本編寫服務端代碼&#xff0c;有個獲取客戶端代碼的小需求&#xff0c;以前使用servlet開發時很機械的就:String ipAddr"0.0.0.0";if (reqest.getHeader("X-Forwarded-For") null) {ipAddr reqest.getRemoteAddr();}else{i…