自动重新定位时调整弹出位置

时间:2017-06-01 15:57:52

标签: c# xaml uwp

在此处观看演示

See a demo here.

我有一个UWP应用,其中ListView具有可选择的列表项,如图所示。选择项目的右侧将打开Flyout(而不是MenuFlyout)。我在Placement样式中指定Flyout的{​​{1}}为BottomMargin0, -4, 0, 0。这会产生所需的外观,FlyoutPresenter直接位于项目的下方和附近。

但是,如果没有足够的空间显示Flyout,则系统会自动将其移至Flyout Placement。即使我将Top样式的边距定义为-4底部边距,也不会应用它。

有没有办法移动FlyoutPresenter?如果可能的话,我宁愿不使用Flyout,因为没有任何东西可供选择。弹出窗口没有MenuFlyout附加属性,并且更新Canvas最顶级子项的Canvas.Top位置不起作用(我真的没想到它)。

修改:所需的行为是Flyout出现在Flyout Top中,正如所发生的那样,但Placement之间没有空格{1}}和Flyout

1 个答案:

答案 0 :(得分:2)

根据Quickstart: Adding a Flyout放置弹出部分:

  

如果屏幕上有空间,则使用首选位置显示弹出按钮。如果没有足够的空间,例如当元素靠近屏幕边缘时,将使用此回退顺序放置弹出按钮。

placement设置为bottom时,如果没有足够的空间,它将放置在设计的顶部。

  

但没有Flyout和目标之间的空间

如果底部没有足够的空间,则Flyout位于顶部,此时,margin的{​​{1}}应更改为FlyoutPresenter而不是0,4,0,0 {1}}可以访问与底部相同的效果。但是您不知道0,-4,0,0是置于顶部还是底部,因此作为解决方法,您可以将Flyout设置为margin,以使0,-5,0,-5元素位于控件模板Border内{1}}可以满足您的要求。例如:

FlyoutPresenterStyle