繁体   English   中英

使用清除命令清除MenuItem

[英]Clear MenuItem, with clear command

嗨,我是wpf中的“非常”初学者,我正在尝试使菜单项“清除”,它应该清除焦点文本框中的文本,实际上我找不到能完成以下工作的内置命令(复制,粘贴,剪切等)

有内置的命令还是我必须做一个自定义的路由命令,如果是,我已经尝试过但失败了,需要思路

我已经执行了ClearCommandExecuted逻辑,但是问题出在“ CanExecute”上,我试图在那儿访问Keyboard.FocusedElement,但是失败了,因为焦点元素是单击时它自身的菜单项!

请帮助谢谢

您需要使用传递到CanExecuteQuery中的参数之一:

    private void ClearCommandBindingCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        // e.Source is the element that is active,
        if (e.Source is TextBox) // and whatever other logic you need.
        {
            e.CanExecute = true;
            e.Handled = true;
        }
    }

    private void ClearCommandBindingExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        var textBox = e.Source as TextBox;
        if (textBox != null)
        {
            textBox.Clear();
            e.Handled = true;
        } 
    }

我希望这足以使您朝正确的方向前进...

尝试使用FocusManager类。 当您的文本框失去键盘焦点时,如果它位于焦点范围内,则它仍然具有逻辑焦点。 WPF中作为焦点范围的类在默认情况下是Window,MenuItem,ToolBar和ContextMenu。

因此,使用它会给您结果-

FocusManager.GetFocusedElement(winodw1); //Name of the window

有关更多详细信息,请阅读此内容-http://msdn.microsoft.com/zh-cn/library/aa969768.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM