Очистить пункт меню, с командой очистки - PullRequest
0 голосов
/ 25 марта 2011

Привет, я "очень" новичок в wpf. Я пытаюсь сделать пункт меню "Очистить", он должен очистить текст в текстовом поле с фокусом, на самом деле я не смог найти встроенную команду, которая выполняетзадание типа (копировать, вставить, вырезать и т. д.)

есть ли в нем встроенное устройство, или мне нужно сделать настраиваемую маршрутизируемую команду, и если да, то я попытался, но потерпел неудачу, и нужны идеи

Я сделал логику ClearCommandExecuted, но проблема в «CanExecute». Я попытался получить доступ к Keyboard.FocusedElement, но не получилось, потому что при щелчке по элементу фокуса это сам элемент меню, когда его щелкают !!!!

Пожалуйста, помогите спасибо

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Вам нужно использовать один из аргументов, переданных в ваш CanExecuteQuery:

    private void ClearCommandBindingCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        // e.Source is the element that is active,
        if (e.Source is TextBox) // and whatever other logic you need.
        {
            e.CanExecute = true;
            e.Handled = true;
        }
    }

    private void ClearCommandBindingExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        var textBox = e.Source as TextBox;
        if (textBox != null)
        {
            textBox.Clear();
            e.Handled = true;
        } 
    }

Надеюсь, этого достаточно, чтобы вы пошли в правильном направлении ...

0 голосов
/ 25 марта 2011

Попробуйте использовать класс FocusManager.Когда ваш TextBox потерял фокус клавиатуры, он все еще имеет логический фокус, если он находится внутри области фокусировки.Классами в WPF, которые по умолчанию являются областями фокусировки, являются Window, MenuItem, ToolBar и ContextMenu.

Так что использование этого даст вам результат -

FocusManager.GetFocusedElement(winodw1); //Name of the window

Подробнее читайте здесь -http://msdn.microsoft.com/en-us/library/aa969768.aspx

...