Button UWP:为什么按钮的FlyoutBase.ShowAttachedFlyout失败
我有一个Button UWP:为什么按钮的FlyoutBase.ShowAttachedFlyout失败,button,uwp,flyout,Button,Uwp,Flyout,我有一个按钮在XAML中声明,带有一个按钮。弹出式按钮嵌套元素。我正在点击按钮,然后希望显示弹出按钮。但我有一个错误: ShowAttached was called on an element without an attached FlyoutBase. 以下是XAML: <Button ... Click="onMoreClicked"> <Image Source="..." />
按钮
在XAML中声明,带有一个按钮。弹出式按钮
嵌套元素。我正在点击按钮,然后希望显示弹出按钮。但我有一个错误:
ShowAttached was called on an element without an attached FlyoutBase.
以下是XAML:
<Button ... Click="onMoreClicked">
<Image Source="..." />
<Button.Flyout >
...
</Button.Flyout>
</Button>
在调试器中单步执行时,将定义元素和弹出按钮,即不为null。然而,ShowAttachedFlyout
失败了
编辑
为了清楚起见,使用@AryaDing MSFT的答案,以下是我的工作解决方案:
<Button ... Click="onMoreClicked">
<Image Source="..." />
<FlyoutBase.AttachedFlyout>
...
</FlyoutBase.AttachedFlyout>
</Button>
此问题是由于未使用FlyoutBase.AttachedFlyout来附加属性造成的,FlyoutBase.ShowAttachedFlyout和FlyoutBase.AttachedFlyout需要一起使用 派生自,如果控件没有弹出型按钮属性,则可以使用附着的属性。执行此操作时,还需要调用该方法以显示弹出按钮 因此,您可以参考如下代码
<Button>
<Button.Flyout >
<Flyout>
<TextBlock Text="This is a flyout!"/>
</Flyout>
</Button.Flyout>
</Button>
XAML:
因为按钮有一个弹出属性,所以您也可以像下面这样直接写入
<Button>
<Button.Flyout >
<Flyout>
<TextBlock Text="This is a flyout!"/>
</Flyout>
</Button.Flyout>
</Button>
很有趣。使用
弹出式按钮。AttachedFlyout
有效。您提出的第二个解决方案(与我的OP相同)不起作用。为什么这种差异如此显著?
<Button Click="onMoreClicked">
<FlyoutBase.AttachedFlyout>
<Flyout>
<TextBlock Text="This is a flyout!"/>
</Flyout>
</FlyoutBase.AttachedFlyout>
</Button>
private void onMoreClicked(object sender, RoutedEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
FlyoutBase.ShowAttachedFlyout(element);
}
<Button>
<Button.Flyout >
<Flyout>
<TextBlock Text="This is a flyout!"/>
</Flyout>
</Button.Flyout>
</Button>