2
在我的按钮的点击事件中,我有几个异步的方法,我希望他们在按钮的Flyout内容显示之前完成。无论如何都要将Flyout内容从显示中延迟出来,还是在点击与其关联的按钮时总是显示?如何延迟Button.Flyout出现?
在我的按钮的点击事件中,我有几个异步的方法,我希望他们在按钮的Flyout内容显示之前完成。无论如何都要将Flyout内容从显示中延迟出来,还是在点击与其关联的按钮时总是显示?如何延迟Button.Flyout出现?
在您的情况下,不要将弹出窗口与按钮相关联,因为它会自动显示。相反,在资源或其他元素中定义您的弹出窗口,然后从代码中调用它。样品的例子可以是这样的:
<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);
}
也许你可以火从后面代码的弹出窗口,一旦你的工作完成? – Romasz
我一直在寻找,如果我可以,但还没有找到方法。有一个隐藏函数调用,但我没有看到显示功能 – Lotzi11
只需将弹出窗口与按钮相关联,否则它将自动显示。与其他元素关联或在资源中定义,然后从代码'yourFlyout.ShowAt(UIElement);'调用。 – Romasz