我想在我的应用程序顶部显示带有附加信息的弹出窗口,我的信息是Listview
大约 500 个项目我都尝试过:
-
有问题flyout
-> 它里面可能有scrollViewer,所以我的列表视图不能正确虚拟化,其他一切都可以。有我的代码:
Flyout myFlyout = new Flyout();
myFlyout.Placement = FlyoutPlacementMode.Full;
myFlyout.Content = myListView;
myFlyout.ShowAt(this);
-
有问题popup
-> 它不居中,垂直对齐不起作用,水平对齐也不起作用
Popup myPopup = new Popup();
myPopup.Child = myListView;
myPopup.IsOpen = true;
那么我应该走哪条路,尝试编辑弹出窗口的模板或通过设置垂直和水平偏移来居中弹出窗口?
或者有更好的方法来显示弹出式窗口,其中包含项目列表或其他类似信息
默认情况下,Flyout
has a ScrollViewer
里面。您可以在以下位置找到其模板:FlyoutPresenter 样式和模板 https://msdn.microsoft.com/en-us/library/windows/apps/xaml/mt299125.aspx。您可以通过设置对其进行编辑并使用新模板Flyout.FlyoutPresenterStyle https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.flyout.flyoutpresenterstyle.aspx如果您需要的话。
如果你想使用Popup
's HorizontalAlignment
and VerticalAlignment
属性,您需要添加Popup
作为视觉树中元素的子元素。例如:
Popup myPopup = new Popup();
//MainGrid is the top Grid in the Page
MainGrid.Children.Add(myPopup);
myPopup.HorizontalAlignment = HorizontalAlignment.Center;
myPopup.VerticalAlignment = VerticalAlignment.Center;
myPopup.Child = myListView;
myPopup.IsOpen = true;
但请注意,这实际上并不意味着Popup
居中。它使Popup
的左上角居中。在里面Remarks的部分弹出类 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.popup.aspx, 它说:
您定位Popup通过设置水平偏移 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.popup.horizontaloffset and 垂直偏移 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.popup.verticaloffset特性。这Popup相对于其直接父容器的偏移量。
我认为在使用时HorizontalAlignment.Center
and VerticalAlignment.Center
,它设置了HorizontalOffset
and VerticalOffset
为其父级宽度和高度的一半。
并且在Remarks部分,它还说:
不要使用Popup if a Flyout https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.flyout.aspx, 菜单弹出窗口 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.menuflyout.aspx, ToolTip https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.tooltip.aspx or 消息对话框 https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx更合适。
所以我认为在你的情况下使用Flyout
是一个更好的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)