コード例 #1
0
ファイル: FlowManager.cs プロジェクト: OceanYan/Platform
 /// <summary>
 /// 键盘操作
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnPreviewKeyDown(object sender, KeyEventArgs e)
 {
     if (_target != sender)
     {
         return;
     }
     e.Handled = true;
     //如果外部已经禁用用户输入或内部正在处理,终结事件并返回
     if (!CanAcceptUserInput || CurrentElement == null)
     {
         return;
     }
     #region 输入检查
     //控件内部需求检查
     e.Handled = false;
     //返回值true:继续往下执行,false:停止后续步骤,注意e.Handled决定是否继续内部传递
     if (!CurrentElement.OnFlowKeyDown(e))
     {
         return;
     }
     e.Handled = true;
     var pressKey = "";
     if (e.Key == Key.Enter || e.Key == Key.Down || e.Key == Key.Right || e.Key == Key.Tab)
     {
         pressKey = "DOWN";
     }
     else if (e.Key == Key.Up || e.Key == Key.Left)
     {
         pressKey = "UP";
     }
     #endregion
     if (pressKey == "DOWN")
     {
         MoveFocusHost(FlowNavigation.Forward);
     }
     else if (pressKey == "UP")
     {
         MoveFocusHost(FlowNavigation.Backward);
     }
     else
     {
         e.Handled = false;
     }
 }