清除MenuItem,清​​除命令

时间:2011-03-25 05:27:43

标签: c# wpf routed-commands

喜 我是wpf的“非常”初学者 我正在尝试将菜单项设置为“清除”,它应该清除聚焦文本框中的文本, 实际上我找不到像这样的工作的内置命令(复制,粘贴,剪切......等)

是否有一个内置或我必须制作自定义路由命令,如果是这样 我已经尝试但失败了,需要创意

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

请帮忙 感谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试使用FocusManager课程。当TextBox丢失键盘焦点时,如果它位于焦点范围内,它仍然具有逻辑焦点。 WPF中默认为焦点范围的类是Window,MenuItem,ToolBar和ContextMenu。

所以使用它会得到结果 -

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

有关详情,请阅读 - http://msdn.microsoft.com/en-us/library/aa969768.aspx