使用Flyout.ShowAt获取“放置目标需要在可视树中”错误

时间:2014-02-15 16:14:18

标签: winrt-xaml flyout

我有一个带有选项菜单的应用栏按钮:

<AppBarButton x:Name="AddButton" x:Uid="AddItem" Icon="Add" RequestedTheme="Dark">
     <AppBarButton.Flyout>
         <MenuFlyout>
              <MenuFlyoutItem Label="Option 1" Click="MenuFlyoutItem_Click" Tag="option1"/>
              <MenuFlyoutItem Label="Option 2" Click="MenuFlyoutItem_Click" Tag="option2"/>
              <MenuFlyoutItem Label="Option 3" Click="MenuFlyoutItem_Click" Tag="option3"/>
         </MenuFlyout>
     </AppBarButton.Flyout>
 </AppBarButton>

目的是当用户选择一个选项时,按钮旁边会出现一个弹出窗口,窗口允许用户提供更多信息,例如:

<Flyout x:Name="MediaTitle">
    <Grid>
         <TextBlock Text"Title" Style="{StaticResource BaseTextBlockStyle}" />
         <TextBox x:Name="descTitle" HorizontalAlignment="Left" Margin="0,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="300" />
         <Button x:Name="descTitle_OK" x:Uid="OK" HorizontalAlignment="Right" Margin="0,73,0,0" VerticalAlignment="Top" Click="DescTitle_OKClick" />
    </Grid>
</Flyout>

弹出窗口在页面资源部分中定义。

在我的代码中,我去了:

MediaTitle.ShowAt(AddButton);

但我得到错误“放置目标需要在可视树中”。

这是否发生是因为按钮位于AppBar而不是“正确”页面上?如果有,有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

事实证明答案很简单 - 我只需要确保应用栏可见。然后,弹出按钮显示在应用栏上的按钮附近。

由于我没有显示的逻辑/代码,应用栏之前已关闭。