在我的按钮的click事件中,我有两个异步的方法,我希望它们在按钮的弹出内容显示之前完成。有没有什么办法延迟弹出内容的显示,或者当它关联的按钮被单击时,它总是显示出来?
发布于 2016-06-08 13:21:58
在这种情况下,不要将弹出按钮与按钮相关联,因为它将自动显示。相反,应该在资源或其他元素中定义弹出按钮,然后从代码中调用它。示例可能如下所示:
<Grid x:Name="RootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Edit"/>
<MenuFlyoutItem Text="Delete"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<Button Content="Click" Click="Button_Click">
<Button.Resources>
<MenuFlyout x:Key="secondFlyout">
<MenuFlyoutItem Text="Edit"/>
<MenuFlyoutItem Text="Delete"/>
</MenuFlyout>
</Button.Resources>
</Button>
</Grid>代码隐藏:
private async void Button_Click(object sender, RoutedEventArgs e)
{
await Task.Delay(2000); // your heavy job you want ot wait for
var thisButton = sender as FrameworkElement;
// first method
(thisButton.Resources["secondFlyout"] as FlyoutBase).ShowAt(thisButton);
// second method
// FlyoutBase.GetAttachedFlyout(RootGrid).ShowAt(thisButton);
}https://stackoverflow.com/questions/37684226
复制相似问题