Freigeben über


UIElement.ContextCanceled Ereignis

Definition

Tritt auf, wenn eine Kontexteingabegeste zu einer Bearbeitungsgeste fortgesetzt wird, um das Element zu benachrichtigen, dass das Kontextflyout nicht geöffnet werden soll.

// Register
event_token ContextCanceled(TypedEventHandler<UIElement, RoutedEventArgs const&> const& handler) const;

// Revoke with event_token
void ContextCanceled(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::ContextCanceled_revoker ContextCanceled(auto_revoke_t, TypedEventHandler<UIElement, RoutedEventArgs const&> const& handler) const;
public event TypedEventHandler<UIElement,RoutedEventArgs> ContextCanceled;
function onContextCanceled(eventArgs) { /* Your code */ }
uIElement.addEventListener("contextcanceled", onContextCanceled);
uIElement.removeEventListener("contextcanceled", onContextCanceled);
- or -
uIElement.oncontextcanceled = onContextCanceled;
Public Custom Event ContextCanceled As TypedEventHandler(Of UIElement, RoutedEventArgs) 
<uiElement ContextCanceled="eventhandler"/>

Ereignistyp

Windows-Anforderungen

Gerätefamilie
Windows 10 Anniversary Edition (eingeführt in 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v3.0)

Beispiele

In diesem Beispiel wird gezeigt, wie ein Kontextmenü angezeigt und ausgeblendet wird, wenn der Benutzer mit der rechten Maustaste klickt oder eine entsprechende Aktion ausführt. Das Kontextmenü bietet die Optionen Rot und Grün und wird auf einem Rechteck platziert.

Ein Kontextmenü mit den Optionen Rot und Grün
<Page
    ...>
    <Page.Resources>
        <MenuFlyout x:Key="colorMenuFlyout">
            <MenuFlyoutItem Text="Red" Tag="red" Click="MenuFlyoutItem_Click"/>
            <MenuFlyoutItem Text="Green" Tag="green" Click="MenuFlyoutItem_Click"/>
        </MenuFlyout>
    </Page.Resources>

    <Grid>
        <Rectangle Width="100" Height="100" Fill="Yellow"
                   ContextRequested="Color_ContextRequested" 
                   ContextCanceled="Color_ContextCanceled">
        </Rectangle>
    </Grid>
</Page>
public sealed partial class MainPage : Page
{
    MenuFlyout colorMenuFlyout;

    public MainPage()
    {
        this.InitializeComponent();

        colorMenuFlyout = Resources["colorMenuFlyout"] as MenuFlyout;
    }

    private void Color_ContextRequested(UIElement sender, ContextRequestedEventArgs args)
    {
        Point point = new Point(0,0);

        if (args.TryGetPosition(sender, out point))
        {
            colorMenuFlyout.ShowAt(sender, point);
        }
        else
        {
            colorMenuFlyout.ShowAt((FrameworkElement)sender);
        }
    }

    private void Color_ContextCanceled(UIElement sender, RoutedEventArgs args)
    {
        colorMenuFlyout.Hide();
    }

    private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
    {
        var item = sender as MenuFlyoutItem;
        var target = colorMenuFlyout.Target;
        if (string.Equals(item.Tag.ToString(), "red"))
        {
            ((Rectangle)target).Fill = new SolidColorBrush(Windows.UI.Colors.Red);
        }
        else if (string.Equals(item.Tag.ToString(), "green"))
        {
            ((Rectangle)target).Fill = new SolidColorBrush(Windows.UI.Colors.Green);
        }
    }
}

Hinweise

Es wird empfohlen, dass Sie die ContextFlyout-Eigenschaft festlegen, um einem Element ein Kontextmenü hinzuzufügen. Wenn ContextFlyout festgelegt ist, wird das Kontextmenü automatisch angezeigt und ausgeblendet. Sie sollten und nur behandeln ContextRequestedContextCanceled , wenn Sie nicht festlegen ContextFlyout.

Wenn Sie das ContextRequested-Ereignis behandeln, um das Kontextflyout anzuzeigen, sollten Sie dieses Ereignis auch behandeln, um das Flyout auszublenden, wenn die Anforderung abgebrochen wird.

In der Regel behandeln Sie dieses Ereignis für Elemente, die per Drag-and-Drop bearbeitet werden können. Dieses Ereignis wird ausgelöst, wenn ein ContextRequested-Ereignis ausgelöst wurde, das Element jedoch kein PointerReleased-Ereignis empfangen hat, bevor eine Bearbeitung beginnt. Dies gibt an, dass der Benutzer anstelle eines Kontext-Flyouts eine Bearbeitung aufrufen wollte, sodass das Kontextflyout nicht geöffnet werden sollte.

ContextCanceled ist ein Routingereignis. Weitere Informationen zum Konzept von Routingereignissen finden Sie unter Übersicht über Ereignisse und Routingereignisse.

Gilt für:

Weitere Informationen