我的浮出控件的内容比浮出控件的长度长,因此垂直滚动条被激活。我希望获得底层的 ScrollViewer,以便每次关闭 Flyout 时都可以重置滚动位置。
尝试获取弹出窗口的内容,但在可视化树中找不到 ScrollViewer。
这应该有效:
private void Flyout_Closing(FlyoutBase sender, FlyoutBaseClosingEventArgs args)
{
_ = (sender as Flyout)?
.Content
.FindDescendant<ScrollViewer>()?
.ChangeView(horizontalOffset: 0, verticalOffset: 0, zoomFactor: null, disableAnimation: true);
}
注意
FindDescendant
来自 CommunityToolkit.WinUI.Extensions NuGet 包。当然,您应该也可以使用 VisualTreeHelper
来获取 ScrollViewer
。