WinUI3 ScrollView 中的 TabView 出现问题,它会自动将视图滚动到其位置

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

在 ScrollView 中添加 TabView 时,如果 TabView 位于屏幕外,则似乎会向 ScrollView 发送一些信号以更改其滚动视图垂直偏移位置。即使是 WinUI3 Gallery 示例中的简单 TabView 示例也具有相同的作用。

以我的拙见,预期的行为是将 ScrollView 保留到偏移位置 0,但情况似乎并非如此。

有人知道解决办法吗?

scrollview tabview
1个回答
0
投票

我终于找到了两个解决方法。 TabView 似乎正在请求 BringIntoViewRequest。

  1. (在TabView中)如果我们在发送请求时指定请求id为
    Handled
    ,那么就不会触发ScrollView的ChangeView事件
private void TabView_BringIntoViewRequested(UIElement sender, BringIntoViewRequestedEventArgs args)
{
    args.Handled = true;
}
  1. (在ScrollView处)我们可以指定ScrollView在控件获得焦点时不触发BringIntoView
<ScrollViewer Grid.Row="1" Name="CurrentScrollViewer" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible" 
    ViewChanged="{x:Bind ViewModel.ScrollViewer_OnViewChanged}" HorizontalAlignment="Stretch"
    ViewChanging="CurrentScrollViewer_ViewChanging"                                  
    BringIntoViewOnFocusChange="False"
    >
    <StackPanel x:Name="stackPanel" Margin="0,0,5,0" Spacing="5" MaxWidth="850" />
</ScrollViewer>      
© www.soinside.com 2019 - 2024. All rights reserved.