在代码中访问WinUI中Flyout的隐式ScrollViewer

问题描述 投票:0回答:1

我的浮出控件的内容比浮出控件的长度长,因此垂直滚动条被激活。我希望获得底层的 ScrollViewer,以便每次关闭 Flyout 时都可以重置滚动位置。

尝试获取弹出窗口的内容,但在可视化树中找不到 ScrollViewer。

c# winui-3 scrollviewer windows-app-sdk
1个回答
0
投票

这应该有效:

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

© www.soinside.com 2019 - 2024. All rights reserved.