我的目标是创建填充了我的自定义控件的GridView。控制有两种状态 - 闭合(70px高)和开放(200px高)。它包含两个网格--70和130.默认情况下,上部网格始终可见,下部网格折叠,Canvas.ZIndex设置为2。
每次扩展控件时,它都不会叠加在GridView中的其他项目上 - 相反,控件会将它们降低。何解决这个问题?
答案 0 :(得分:0)
要渲染覆盖在UI其余部分顶部的控件,您需要使用Popup
。它可以完全自定义,但需要一些支持代码才能使其正常工作。
如果您要求不高,使用Flyout
可能就足够了。它的定位,外观和行为受到更多限制,但也更易于使用:
<TextBlock Tapped="UIElement_OnTapped">Closed
<FlyoutBase.AttachedFlyout>
<Flyout Placement="Bottom">
<TextBlock>Opened</TextBlock>
</Flyout>
</FlyoutBase.AttachedFlyout>
</TextBlock>
在事件处理程序中,您可以将其显示为:
private void UIElement_OnTapped(object sender, TappedRoutedEventArgs e)
{
var uiSender = sender as UIElement;
var flyout = (FlyoutBase) uiSender.GetValue(FlyoutBase.AttachedFlyoutProperty);
flyout.ShowAt(uiSender as FrameworkElement);
}
有关详细信息,请查看this blog post,了解如何基于Popup创建自定义类似Fylout的控件。