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

siv*_*iva 6 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>
Run Code Online (Sandbox Code Playgroud)

在这方面的任何帮助将不胜感激

Jes*_*det 15

你需要调用ScrollIntoView:

list.ScrollIntoView(list.Items[list.Items.Count - 1]);
Run Code Online (Sandbox Code Playgroud)

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/

  • 我打算在XAML中执行此操作,因为它是MVVM的最正确方法,但这太麻烦了。令我惊讶的是,这不仅仅是您必须将其设置为true还是false的属性,具体取决于您是否希望它保持最新的焦点。 (2认同)