首页 > Windows开发 > 详细

WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

时间:2019-04-05 00:53:40      阅读:304      评论:0      收藏:0      [点我收藏+]
原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

问题描述

今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发现默认菜单式不可用的.

问题原因

这个问题不知道算不算BUG,反正如果是在一个不可获得的焦点的东西上面使用ContextMenu,CanExecute的事件路由就会停止在ContextMenu,就没办法到达窗体上.一个解决的方案是吧CommandTarget设置到窗体上去.

事例代码

<Window x:Class="TestPopupMenuCommand.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.CommandBindings>
        <CommandBinding Command="Close" Executed="CloseCommand"/>
        <CommandBinding Command="New"   Executed="NewCommand"/>
    </Window.CommandBindings>
    <Grid>
        <TextBlock>
            <TextBlock.ContextMenu>
                <ContextMenu>
                <MenuItem Command="New" CommandTarget="{Binding Path=PlacementTarget,RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
                <MenuItem Command="Close"/>
                </ContextMenu>
            </TextBlock.ContextMenu>
            test
        </TextBlock>
    </Grid>
</Window>

代码分析

里面的两个菜单项,New的是可用的,Close默认是不可以用的.因为我把New的CommandTarget修改了.

里面具体的command实现代码我就不贴了.

WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

原文:https://www.cnblogs.com/lonelyxmas/p/10657682.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!