我想在应用程序的顶部显示弹出窗口并显示其他信息,我的信息是Listview,其中有500项我都尝试过:
>弹出问题->它可能里面有scrollViewer,所以我的listview不能正确地虚拟化其他一切正常.有我的代码:
Flyout myFlyout = new Flyout();
myFlyout.Placement = FlyoutPlacementMode.Full;
myFlyout.Content = myListView;
myFlyout.ShowAt(this);
>弹出问题->它没有居中,verticalAlignment不起作用,horizontal也没有
Popup myPopup = new Popup();
myPopup.Child = myListView;
myPopup.IsOpen = true;
那么我应该走哪条路,尝试编辑弹出框或通过设置垂直和水平偏移使弹出窗口居中?
或者有更好的方法来显示带有诸如项目列表之类的信息的窗口之类的弹出窗口
解决方法:
默认情况下,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的“备注”部分中,它表示:
You position the Popup by setting the 07003 and 07004 properties. The Popup is offset relative to its immediate parent container.
我认为在使用HorizontalAlignment.Center和VerticalAlignment.Center时,它将HorizontalOffset和VerticalOffset设置为其父级的宽度和高度的一半.
并且在“备注”部分中,它还说:
Do not use a Popup if a 07005, 07006, 07007 or 07008 is more appropriate.
因此,我认为在您的情况下,使用Flyout是更好的方法.