WPF ListView始终关注最后添加的项目?

时间:2009-10-16 07:45:45

标签: wpf listview

我有很多ListViews与IsSynchronizedWithCurrentItem="True"相同的DataSource 我正在动态地向这个DataSource添加项目。

问题是当滚动出现时,添加的项目不可见,除非我移动滚动条。我应该为此目的使用另一个控件..或者如何将最后添加的项目带入视图(和滚动条)。

到目前为止,我一直在XAML中做所有事情,所以如果可能的话,我会很感激这样的解决方案。

4 个答案:

答案 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()方法来...将所选项目带入视图:)。