如何在WPF ListView中查看最后添加的列表视图项

时间:2010-11-12 19:22:17

标签: wpf listview listviewitem

我正在使用视图模型绑定到列表视图。每次我在视图模型内部可观察集合中添加一个项目时,我都会触发一个带有list.Count-1的LastIndex属性。列表视图绑定到VM的LastIndex属性,listview正确选择添加到视图的最后一项。不幸的是,视图无法将最后添加的项目滚动到视图中。

我尝试在列表视图标记上设置IsSynchronizedWithCurrentItem =“True”,但它没有帮助。

这是我正在使用的标记

<ListView ItemsSource="{Binding Path=Status.Messages}" 
         SelectedIndex="{Binding Path=Status.LastIndex, Mode=OneWay}"
         ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         HorizontalAlignment="Stretch" 
         Height="60" 
         IsSynchronizedWithCurrentItem="True" >
    <ListView.Resources>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView AllowsColumnReorder="False" >
            <GridViewColumn>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=.}" FontWeight="Thin" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
    <ListView.
</ListView>

非常感谢这方面的任何帮助

1 个答案:

答案 0 :(得分:15)

您需要调用ScrollIntoView:

list.ScrollIntoView(list.Items[list.Items.Count - 1]);

http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview.aspx

编辑:

这是XAML中的一种方法:

http://michlg.wordpress.com/2010/01/16/listbox-automatically-scroll-currentitem-into-view/