我正在为Raspberry Pi创建UWP。我的应用程序使用ListView
在屏幕上显示了一些数据。但是,屏幕未连接到鼠标或键盘,因此无法滚动查看全部数据。有什么方法可以自动滚动列表视图,当列表视图到达末尾时,它将再次转到列表的开头?
<local:AlternatingRowListView>
<local:AlternatingRowListView.ItemTemplate>
<DataTemplate>
<Grid Width="{Binding ActualWidth, ElementName=TableData}" Padding="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding UpperDescription}" FontSize="24" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Margin="2" HorizontalAlignment="Left" Foreground="Black"/>
<TextBlock Text="{Binding Title}" FontSize="76" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" Margin="2" HorizontalAlignment="Left" Foreground="Black"/>
<TextBlock Text="{Binding LowerDescription}" FontSize="24" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" Margin="2" HorizontalAlignment="Left" Foreground="Black"/>
<!--<TextBlock Text="{Binding Deadline}" FontSize="24" Grid.Row="1" Grid.Column="3" Margin="2" HorizontalAlignment="Center" Foreground="Black"/>
<TextBlock Text="{Binding State}" FontSize="24" Grid.Row="1" Grid.Column="4" Margin="2" HorizontalAlignment="Center" Foreground="Black"/>-->
</Grid>
</DataTemplate>
</local:AlternatingRowListView.ItemTemplate>
</local:AlternatingRowListView>
答案 0 :(得分:0)
如果要滚动到列表中的特定项目,可以使用input_shape=(n_frames,3)
方法:
ScrollToView
如果您需要更精细的控件(例如侦听嵌入式listView.ScrollIntoView(item);
事件),则首先需要访问嵌入式控件:
以下帮助器方法将返回给定ScrollViewer
中的第一个ScrollViewer
:
DependencyObject
因此,您现在可以像这样访问public static ScrollViewer GetScrollViewer(DependencyObject dependencyObject)
{
if (dependencyObject is ScrollViewer scroller) return scroller;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++)
{
var child = VisualTreeHelper.GetChild(dependencyObject, i);
var result = GetScrollViewer(child);
if (result != null) return result;
}
return null;
}
:
ScrollViewer
答案 1 :(得分:0)
有什么方法可以自动滚动列表视图,当它到达末尾时,它将再次转到列表的开头吗?
我注意到您是自己制作一个自定义AlternatingRowListView
,这是一个好的开始。如果要使ListView自动滚动,可以尝试在自定义AlternatingRowListView
中添加一个计时器。例如,DispatcherTimer,您可以在加载计时器时启动它。然后,在其Tick
事件处理程序中,可以使用ScrollViewer滚动列表。
关于如何获取ScrollViewer?我相信您已经在自定义控件类中覆盖了OnApplyTemplate
方法,可以调用this.GetTemplateChild("ScrollViewer") as ScrollViewer
来获取ScrollViwer。
有关详细信息,您可以参考Bottom-up list (XAML) sample。
然后,您需要手动计算它是否到达末尾。一旦到达终点,您可以停止计时器并滚动到列表顶部。上述示例还涉及部分计算,您可以检查一下。