Запись <period>в моем TextBox должна выполнять вкладку - PullRequest
0 голосов
/ 24 сентября 2010

Когда я записываю <period> в myTextBox, я хочу выполнить myOtherText.Focus.

Кто-нибудь знает способ сделать это в коде xaml?

Редактировать: Согласенчто оригинальное решение, о котором я просил, было немного хакерским.Поэтому я изменил вопрос.:)

1 Ответ

1 голос
/ 24 сентября 2010

Я не думаю, что вы могли бы справиться с этим с XAML.По крайней мере, не в здравом уме.

Что вы можете сделать, это прослушать события KeyDown или KeyUp в вашем элементе управления textbox и соответственно переместить фокус.В зависимости от того, хотите ли вы, чтобы точка появлялась или нет, вы можете выбрать, какое из этих событий прослушивать:

  • Чтобы точка появилась в первом (исходном) текстовом поле, прослушайтеKeyUp и перемещайте фокус, когда e.Key == Key.0emPeriod
  • Чтобы точка появилась во втором текстовом поле, прослушайте KeyDown и переместите фокус, когда e.Key == Key.0emPeriod
  • Чтобы не отображать точку на всех , слушайте KeyDown и перемещайте фокус при e.Key == Key.0emPeriod, а также установите e.Handled на true после перемещения фокуса (в обработчике событий KeyDown)

Этот код может перемещать фокус на все, что находится дальше в порядке табуляции:

private void MoveFocus(TextBox from)
{
    // Assuming the logical parent is a panel (grid, stackpanel etc.) and 
    // that the element to move focus to is also in the same panel after 
    // the current one
    // This will break if you have a more complex layout
    var panel = from.Parent as Panel;
    if (panel == null)
        return;
    var pos = panel.Children.IndexOf(from);
    for (int i = pos + 1; i < panel.Children.Count; i++)
    {
        UIElement child = panel.Children[i];
        if (KeyboardNavigation.GetIsTabStop(child))
        {
            child.Focus();
            break;
        }
    }
}

, конечно, если вы всегда знаете имя элемента управления для перемещения фокуса, вы можете просто сказать:

myOtherTextBox.Focus();

вместо навигации по дочерней коллекции панели.

...