WPF键盘焦点弹出问题

时间:2010-01-28 14:57:08

标签: wpf keyboard popup

我有键盘焦点问题。 这是它现在的工作方式(不正确):

  1. TextBox
  2. MyControl
  3. 如果MyControl.PopupShowed那么 GOTO 1.其他GOTO 4。
  4. 组合框
  5. 我想通过Popup Close继续最后一个标签焦点,这意味着从3跳到4。

    我怎么能这样做,拜托?

    <Window>
    ...
    <TextBox />
    
    <MyControl>
      ...
      <Popup>
      </Popup>
    </MyControl>
    
    <ComboBox />
    ...
    </Window>
    
    
    FocusableProperty.OverrideMetadata(typeof(ListPicker), new FrameworkPropertyMetadata(true));
    

1 个答案:

答案 0 :(得分:1)

这是做这种事情的一种方法。如果它不太适合您的情况,您可以调整它以满足您的需求。设置关键按下的事件处理程序(可能在窗口上)。如果您在按Tab键时发现正在处理事件,请使用预览键。

internal void OnKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Tab && MyControl.PopupShowed)
        {
            MyControl.ClosePopup()
            window.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            e.Handled = true;
        }
    }