C# 使用Clear命令清除菜单项
嗨 我是wpf的“非常”初学者 我正在尝试使菜单项“清除”,它应该清除聚焦文本框中的文本, 实际上,我找不到一个内置的命令来完成(复制、粘贴、剪切等)这样的工作 是否有一个内置的或我必须作出自定义路由命令,如果是这样 我试过了,但失败了,需要一些想法 我已经制定了ClearCommandExecuted逻辑,但问题在于“CanExecute” 我试图访问那里的Keyboard.FocusedElement,但失败了,因为焦点元素是单击时它自己的菜单项 请帮忙C# 使用Clear命令清除菜单项,c#,wpf,routed-commands,C#,Wpf,Routed Commands,嗨 我是wpf的“非常”初学者 我正在尝试使菜单项“清除”,它应该清除聚焦文本框中的文本, 实际上,我找不到一个内置的命令来完成(复制、粘贴、剪切等)这样的工作 是否有一个内置的或我必须作出自定义路由命令,如果是这样 我试过了,但失败了,需要一些想法 我已经制定了ClearCommandExecuted逻辑,但问题在于“CanExecute” 我试图访问那里的Keyboard.FocusedElement,但失败了,因为焦点元素是单击时它自己的菜单项 请帮忙 谢谢尝试使用FocusManager
谢谢尝试使用
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;
}
}
我希望这足以让您朝着正确的方向前进……您能发布您已有的代码吗?非常感谢,这很有帮助,很抱歉回复太晚