【问题标题】:How to bring into view last added list view item in WPF ListView如何在 WPF ListView 中查看最后添加的列表视图项
【发布时间】:2010-11-12 19:22:16
【问题描述】:

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

我尝试在列表视图标记上设置 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>

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

【问题讨论】:

    标签: wpf listview listviewitem


    【解决方案1】:

    你需要调用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/

    【讨论】:

    • 我打算在 XAML 中执行此操作,因为它是 MVVM 最正确的方法,但这实在是太麻烦了。我很惊讶这不仅仅是你必须设置为 true 或 false 的属性,具体取决于你是否希望它保持最新添加的焦点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多