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>