示例#1
0
 protected override void OnPreviewKeyDown(KeyEventArgs e)
 {
     if (e.Key == Key.Tab)
     {
         TextBox textBox = e.OriginalSource as TextBox;
         BudgetEditorCategoryMonth monthView   = FindParent(textBox);
         BudgetEditorCategoryRow   categoryRow = monthView.FindParent <BudgetEditorCategoryRow>();
         if (textBox != null && monthView != null && categoryRow != null)
         {
             if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
             {
                 e.Handled = NavigatePreviousCategoryMonth(textBox, categoryRow, monthView);
             }
             else
             {
                 e.Handled = NavigateNextCategoryMonth(textBox, categoryRow, monthView);
             }
         }
     }
     base.OnPreviewKeyDown(e);
 }
示例#2
0
        private bool NavigateNextCategoryMonth(TextBox textBox, BudgetEditorCategoryRow row, BudgetEditorCategoryMonth monthView)
        {
            if (!(this.DataContext is BudgetEditorViewModel editorViewModel))
            {
                return(false);
            }
            if (!(row.DataContext is CategoryRowViewModel rowViewModel))
            {
                return(false);
            }
            if (!(monthView.DataContext is CategoryMonthViewModel monthViewModel))
            {
                return(false);
            }

            var lastRow = rowViewModel.MasterCategory.Categories[rowViewModel.MasterCategory.Categories.Count - 1];

            if (rowViewModel == rowViewModel.MasterCategory.Categories.Last() && rowViewModel.MasterCategory == editorViewModel.MasterCategories.Last())
            {
                var nextCategoryMonth = FindNextCategoryMonth(editorViewModel, monthViewModel);
                var nextTextBox       = FindAmountBudgetedTextBox(nextCategoryMonth);
                if (nextTextBox != null)
                {
                    nextTextBox.Focus();
                    nextTextBox.BringIntoView();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Down);
                textBox.MoveFocus(request);
                return(true);
            }
        }
示例#3
0
        private bool NavigatePreviousCategoryMonth(TextBox textBox, BudgetEditorCategoryRow row, BudgetEditorCategoryMonth monthView)
        {
            if (!(this.DataContext is BudgetEditorViewModel editorViewModel))
            {
                return(false);
            }
            if (!(row.DataContext is CategoryRowViewModel rowViewModel))
            {
                return(false);
            }
            if (!(monthView.DataContext is CategoryMonthViewModel monthViewModel))
            {
                return(false);
            }

            if (rowViewModel == rowViewModel.MasterCategory.Categories.First() && rowViewModel.MasterCategory == editorViewModel.MasterCategories.First())
            {
                var previousCategoryMonth = FindPreviousCategoryMonth(editorViewModel, monthViewModel);
                var previousTextBox       = FindAmountBudgetedTextBox(previousCategoryMonth);
                if (previousTextBox != null)
                {
                    previousTextBox.Focus();
                    previousTextBox.BringIntoView();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Up);
                textBox.MoveFocus(request);
                return(true);
            }
        }