国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[C#]轉(zhuǎn):在WPF里面獲取右鍵彈出菜單(ContextMenu)的鼠標(biāo)點(diǎn)擊源(Owner)控件

[C#] 轉(zhuǎn):在WPF里面獲取右鍵彈出菜單(ContextMenu)的鼠標(biāo)點(diǎn)擊源(Owner)控件

(2013-01-28 14:06:28)
轉(zhuǎn)自:http://blog.csdn.net/donjuan/article/details/3851014

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

 

很多時候,我們會希望在WPF的資源文件里面定義一個通用的右鍵彈出菜單,然后將這個菜單通過定義在各個控件的ContextMenu屬性來設(shè)置用戶右擊控件時彈出菜單。然而因?yàn)閃PF的一些設(shè)計(jì)不足,你不能在右鍵菜單的點(diǎn)擊事件處理函數(shù)中獲知右鍵菜單彈出時,鼠標(biāo)的焦點(diǎn)是在哪個控件上?例如下面的代碼:

 

XAML代碼: 

<</span>Window.Resources>

    <</span>ContextMenu x:Key="sampleContextMenu">

        <</span>MenuItem Header="MenuItem1" Click="WhoBringMeOut" />

    </</span>ContextMenu>

    ...

</</span>Window.Resources>

 

<</span>TreeView>

    <</span>TreeViewItem Header="TreeViewItem1" ContextMenu="{StaticResourcesampleContextMenu}" />

    <</span>TreeViewItem Header="TreeViewItem2" ContextMenu="{StaticResourcesampleContextMenu}" />

    <</span>TreeViewItem Header="TreeViewItem3"/>

</</span>TreeView>

 

<</span>DockPanel ContextMenu="{StaticResourcesampleContextMenu}" >

    <</span>Image Source="img1.ico" />

    <</span>TextBlock Text="QuicklyAccess" />

</</span>DockPanel> 

 

C#代碼: 

    public void WhoBringMeOut(object sender,RoutedEventArgs e)

    {

        //sender的值是被點(diǎn)擊的MenuItem,而不是觸發(fā)右鍵菜單

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

    }

 

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

 

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

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

 

使用下面的方法獲取到ContextMenu的Owner: 
ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(senderas MenuItem))

 

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

    public void WhoBringMeOut(object sender,RoutedEventArgs e)

    {

        ContextMenuService.GetPlacementTarget(

            LogicalTreeHelper.GetParent(sender as MenuItem));

    }

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
引用 wpf Command
Visual?C#?windows窗體示例主題(一)(MSDN整理)
WPF快速入門系列(7)
《Dotnet9》系列-開源C# WPF控件庫2《Panuon.UI.Silver》強(qiáng)力推薦
【W(wǎng)PF學(xué)習(xí)】第三十二章 執(zhí)行命令
Power query M 自定義函數(shù) each
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服