Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Clear命令清除菜单项_C#_Wpf_Routed Commands - Fatal编程技术网

C# 使用Clear命令清除菜单项

C# 使用Clear命令清除菜单项,c#,wpf,routed-commands,C#,Wpf,Routed Commands,嗨 我是wpf的“非常”初学者 我正在尝试使菜单项“清除”,它应该清除聚焦文本框中的文本, 实际上,我找不到一个内置的命令来完成(复制、粘贴、剪切等)这样的工作 是否有一个内置的或我必须作出自定义路由命令,如果是这样 我试过了,但失败了,需要一些想法 我已经制定了ClearCommandExecuted逻辑,但问题在于“CanExecute” 我试图访问那里的Keyboard.FocusedElement,但失败了,因为焦点元素是单击时它自己的菜单项 请帮忙 谢谢尝试使用FocusManager

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

是否有一个内置的或我必须作出自定义路由命令,如果是这样 我试过了,但失败了,需要一些想法

我已经制定了ClearCommandExecuted逻辑,但问题在于“CanExecute” 我试图访问那里的Keyboard.FocusedElement,但失败了,因为焦点元素是单击时它自己的菜单项

请帮忙
谢谢

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

因此,使用它将得到以下结果-

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

有关更多详细信息,请阅读此-

您需要使用传入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;
        } 
    }

我希望这足以让您朝着正确的方向前进……

您能发布您已有的代码吗?非常感谢,这很有帮助,很抱歉回复太晚