有一個按鈕是用下面的代碼以編程方式點擊,但它保持聚焦(我不知道與術語,雖然)。我怎樣才能擺脫這一點?失去焦點的按鈕
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