有一个按钮是用下面的代码以编程方式点击,但它保持聚焦(我不知道与术语,虽然)。我怎样才能摆脱这一点?失去焦点的按钮
private void txt_addRemove_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
btn_BC_add.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
有一个按钮是用下面的代码以编程方式点击,但它保持聚焦(我不知道与术语,虽然)。我怎样才能摆脱这一点?失去焦点的按钮
private void txt_addRemove_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
btn_BC_add.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
}
}
除了一个事实,即真的有线调用ButtonClick
。你应该做相反,至少定义Command
,其关联到一个按钮,并从该代码不呼叫RaiseEvent
,但调用关联到该按钮Command
。在实践中你可以调用一个函数。
重点是什么,应该足以明确地将焦点设置为您的视图上的其他控件。
希望这会有所帮助。
你能举个例子吗? – Shibli 2012-03-15 20:58:13
这里有很多方法可以做到你想要什么得当,是一个:
这是最好的设置UpdateSourceTrigger
到PropertyChanged
并使用Command
绑定Enter键。这应该与Button绑定的命令相同(因此将您的业务逻辑移至视图模型层)。
另外,如果这是你的表单上唯一的按钮,你可以设置IsDefault
属性为true(你还是想设置的UpdateSourceTrigger
到PropertyChanged
)。
您可以使用TraversalRequest Class
至MoveFocus
或明确将您的Focus
设置为另一个元素。
即
btn_BC_add.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
以防万一,你的按钮是最后的焦点顺序,你可以尝试其他FocusNavigationDirection
选项,例如上,首先,最后,左,右,上,下, 。
它不起作用 – Shibli 2012-03-15 20:58:26
@Shibli正如MD.Unicorn在他的评论中所说的,程序性点击的行为不会将焦点设置到您的按钮上。您需要确定设置焦点的位置/内容。尝试添加一个GotFocus事件到你的按钮并设置一个断点。然后您可以使用
您提供了两张图像。他们有什么用途?举办活动之前和之后?我认为他们不可能!你期望的结果是什么?提升事件而不对焦按钮?提高点击事件与焦点变化无关。 – 2012-03-15 20:12:12