弹出窗口或弹出窗口以显示附加信息

我希望在我的应用程序顶部显示弹出窗口以及其他信息,我的信息是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; 

那么我应该走哪条路,尝试编辑弹出模板或通过设置垂直和水平偏移来居中弹出窗口? 或者有更好的方式来显示像窗口一样的弹出窗口,如项目列表或其他类似的信息

默认情况下, Flyout内部有一个ScrollViewer 。 您可以在FlyoutPresenter样式和模板中找到它的模板 。 如果需要,可以通过设置Flyout.FlyoutPresenterStyle属性来编辑它并使用新模板。

如果要使用PopupHorizontalAlignmentVerticalAlignment属性,则需要将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类的备注部分,它说:

您可以通过设置Horizo​​ntalOffset和VerticalOffset属性来定位PopupPopup相对于其直接父容器进行偏移。

我认为在使用HorizontalAlignment.CenterVerticalAlignment.Center ,它将HorizontalAlignment.CenterVerticalAlignment.Center设置为其父级宽度和高度的一半。

备注部分,它还说:

如果Flyout , MenuFlyout , ToolTip或MessageDialog更合适,请不要使用弹出 窗口 。

所以我认为在你的情况下使用Flyout是一种更好的方法。