[英]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.