[英]WPF prevent execute command when button got focus
我有文本框和按鈕的應用程序。 當我在文本框中單擊ENTER時,我想將焦點設置在按鈕上(使用遍歷),但是當按鈕獲得焦點時,執行命令。 當按鈕獲得焦點時,我不想執行命令。 這是我的代碼:
View1.xaml
<TextBox PreviewKeyDown="UIElement_OnPreviewKeyDown"/>
View1.xaml.cs
private void UIElement_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Return) return;
TraversalRequest tRequest = new TraversalRequest(FocusNavigationDirection.Next);
UIElement keyboardFocus = Keyboard.FocusedElement as UIElement;
keyboardFocus?.MoveFocus(tRequest);
}
View2.xaml
<Button Content="Testbutton" Command="{Binding TestCommand}"/>
View2Vm
class View2Vm : BaseVm
{
public RelayCommand TestCommand { get; set; }
public View2Vm()
=> TestCommand = new RelayCommand(x => { MessageBox.Show("Message"); });
}
如何在不執行命令的情況下將焦點設置在按鈕上? 謝謝
設置焦點后,仍會啟用KeyDown事件。 解決方法是:
private void UIElement_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Return) return;
TraversalRequest tRequest = new TraversalRequest(FocusNavigationDirection.Next);
UIElement keyboardFocus = Keyboard.FocusedElement as UIElement;
keyboardFocus?.MoveFocus(tRequest);
e.Handled = true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.