我正在尝试使用MVVM实现Listview的自动滚动。我知道您可以通过调用ScrollIntoView来更新列表视图,但这需要Code Behind,我正在努力避免。
我将ListView的ItemSource绑定到ObservableCollection,并希望Listview自动向下滚动到添加到日志中的最新项目。
<ListView ItemsSource="{Binding Log}"
SelectedIndex="{Binding SelectedLine}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Grid.Row="1">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel>
</VirtualizingStackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Type" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Type}" HorizontalAlignment="Center"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:2)
MVVM
和Attached Behaviors
齐头并进。 ObservableCollection.Add()
发生后,您可以使用附加行为滚动到新项目...
这个article是一个很好的例子,它试图在坚持MVVM的同时将树视图项置于滚动视图中。