我有很多ListViews与IsSynchronizedWithCurrentItem="True"
相同的DataSource
我正在动态地向这个DataSource添加项目。
问题是当滚动出现时,添加的项目不可见,除非我移动滚动条。我应该为此目的使用另一个控件..或者如何将最后添加的项目带入视图(和滚动条)。
到目前为止,我一直在XAML中做所有事情,所以如果可能的话,我会很感激这样的解决方案。
答案 0 :(得分:3)
if ( !(myListView.Items.IsEmpty) )
{
myListView.ScrollIntoView(myListView.Items[myListView.Items.Count - 1]);
}
希望有所帮助!
答案 1 :(得分:2)
我认为你可能需要使用这个方法:
ListView.ScrollIntoView(ListView.SelectedItem);
答案 2 :(得分:1)
我找到了解决方案:
它并不适用于所有情况,但这只是足够的!
诀窍是 禁用ListView ScrollBars并使用ScrollViewer将其包围。
...
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" /> <!-- This is needed! -->
...
</Grid.RowDefinitions>
...
<ScrollViewer x:Name="MyScrollViewer" Grid.Row="0" >
<ListView Name="MyListView"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
ScrollViewer.VerticalScrollBarVisibility="Disabled" />
</ScrollViewer>
...
</Grid>
然后只需要调用
MyScrollViewer.ScrollToEnd();
答案 3 :(得分:0)
这听起来很可疑,但即使这是真的,你总是可以调用ListView.BringIntoView()方法来...将所选项目带入视图:)。