Прочитать на английском

Поделиться через


FrameworkContentElement.ContextMenuClosing Событие

Определение

Происходит непосредственно перед закрытием какого-либо контекстного меню в элементе.

C#
public event System.Windows.Controls.ContextMenuEventHandler ContextMenuClosing;

Тип события

Примеры

В следующем примере реализуется обработчик, который изменяет курсор на именованную область DisplayArea (не показано). Комментарий указывает на UIElement использование, но на самом деле этот пример был бы идентичен, если DisplayArea бы был .FrameworkContentElement

C#
private void CursorTypeChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox source = e.Source as ComboBox;

    if (source != null)
    {
        ComboBoxItem selectedCursor = source.SelectedItem as ComboBoxItem;

        // Changing the cursor of the Border control 
        // by setting the Cursor property
        switch (selectedCursor.Content.ToString())
        {
            case "AppStarting":
                DisplayArea.Cursor = Cursors.AppStarting;
                break;
            case "ArrowCD":                        
                DisplayArea.Cursor = Cursors.ArrowCD;
                break;
            case "Arrow":
                DisplayArea.Cursor = Cursors.Arrow;
                break;
            case "Cross":
                DisplayArea.Cursor = Cursors.Cross;
                break;
            case "HandCursor":
                DisplayArea.Cursor = Cursors.Hand;
                break;
            case "Help":
                DisplayArea.Cursor = Cursors.Help;
                break;
            case "IBeam":
                DisplayArea.Cursor = Cursors.IBeam;
                break;
            case "No":
                DisplayArea.Cursor = Cursors.No;
                break;
            case "None":
                DisplayArea.Cursor = Cursors.None;
                break;
            case "Pen":
                DisplayArea.Cursor = Cursors.Pen;
                break;
            case "ScrollSE":
                DisplayArea.Cursor = Cursors.ScrollSE;
                break;
            case "ScrollWE":
                DisplayArea.Cursor = Cursors.ScrollWE;
                break;
            case "SizeAll":
                DisplayArea.Cursor = Cursors.SizeAll;
                break;
            case "SizeNESW":
                DisplayArea.Cursor = Cursors.SizeNESW;
                break;
            case "SizeNS":
                DisplayArea.Cursor = Cursors.SizeNS;
                break;
            case "SizeNWSE":
                DisplayArea.Cursor = Cursors.SizeNWSE;
                break;
            case "SizeWE":
                DisplayArea.Cursor = Cursors.SizeWE;
                break;
            case "UpArrow":
                DisplayArea.Cursor = Cursors.UpArrow;
                break;
            case "WaitCursor":
                DisplayArea.Cursor = Cursors.Wait;
                break;
            case "Custom":
                DisplayArea.Cursor = CustomCursor;
                break;
            default:
                break;
        }

        // If the cursor scope is set to the entire application
        // Use OverrideCursor to force the cursor for all elements
        if (!cursorScopeElementOnly)
        {
            Mouse.OverrideCursor = DisplayArea.Cursor;
        }
    }
}

Комментарии

Чтобы отключить закрывающие контекстные меню, обработчики события должны пометить его как обработанное.

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

XAML
<EventTrigger RoutedEvent="ContextMenuService.ContextMenuClosing">
  <!-- storyboard here ... -->
</EventTrigger>

(Это использование является обязательным, так как реализация события в FrameworkContentElement , которая предоставляет базовое событие службы, неправильно сопоставляет ContextMenuClosing идентификатор для использования в триггерах.

Сведения о маршрутизируемом событии

Поле идентификатора ContextMenuClosingEvent
Стратегия маршрутизации Восходящей
Делегат ContextMenuEventHandler

Применяется к

Продукт Версии
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел