2010-11-12 9 views
6

Estoy usando un modelo de vista para enlazar a la vista de lista. Cada vez que agrego un elemento en la colección observable interna del modelo de vista, desencadenaré una propiedad LastIndex con la lista.Count-1. La vista de lista está ligada a esta propiedad de LastIndex de VM y la vista de lista selecciona correctamente el último elemento agregado a la vista. Lamentablemente, la vista no puede desplazar el último elemento agregado a la vista.Cómo poner en vista la última lista agregada ver el elemento en WPF ListView

Intenté configurar IsSynchronizedWithCurrentItem = "True" en el marcado de vista de lista, pero no ayudó.

Este es el margen de beneficio que estoy usando

<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> 

Cualquier ayuda en este sentido será muy apreciada

Respuesta

15

es necesario llamar a ScrollIntoView:

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

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

EDITAR :

Y aquí es una manera de hacerlo en XAML:

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

+0

Esto resolvió de hecho. Gracias a un millón. – siva

+1

Iba a hacer esto en XAML porque es la manera más correcta para MVVM, pero eso es demasiado para molestar. Me sorprende que esto no sea solo una propiedad que tiene que establecer en verdadero o falso, dependiendo de si desea mantener la última adición en foco o no. – LJNielsenDk

Cuestiones relacionadas