UIElement.ContextCanceled Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
<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 ContextRequested
ContextCanceled
, 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.