我希望在我的应用上方显示弹出窗口,其中包含其他信息,我的信息为Listview
,其中包含大约500件我尝试过的内容:
flyout
的问题 - >它可能里面有scrollViewer所以我的listview没有正确虚拟化其他一切正常。有我的代码:
Flyout myFlyout = new Flyout();
myFlyout.Placement = FlyoutPlacementMode.Full;
myFlyout.Content = myListView;
myFlyout.ShowAt(this);
popup
的问题 - >它不是居中的,verticalAlignment不起作用,水平也不起作用
Popup myPopup = new Popup();
myPopup.Child = myListView;
myPopup.IsOpen = true;
那么我应该走哪条路,尝试编辑弹出模板或通过设置垂直和水平偏移来居中弹出窗口? 或者有更好的方式来显示像窗口一样的弹出窗口,例如项目列表或其他
答案 0 :(得分:3)
默认情况下,Flyout
内部有ScrollViewer
。您可以在FlyoutPresenter styles and templates找到其模板。如果需要,您可以通过设置Flyout.FlyoutPresenterStyle属性来编辑它并使用新模板。
如果您想使用Popup
' HorizontalAlignment
和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;
但是plesae注意到这实际上不会使Popup
居中。它使Popup
的左上角居中。在Popup class的备注部分中,它说:
您可以通过设置HorizontalOffset和VerticalOffset属性来定位弹出窗口。 弹出相对于其直接父容器偏移。
我认为在使用HorizontalAlignment.Center
和VerticalAlignment.Center
时,它会将HorizontalOffset
和VerticalOffset
设置为其父级宽度和高度的一半。
在备注部分,它还说:
如果Flyout,MenuFlyout,ToolTip或MessageDialog更合适,请勿使用弹出式。
所以我认为在你的情况下使用Flyout
是一种更好的方式。