2010-11-12 3 views
6

Sto utilizzando un modello di visualizzazione per collegarlo alla visualizzazione elenco. Ogni volta che aggiungo un elemento nella raccolta interna osservabile del modello di visualizzazione, faccio scattare una proprietà LastIndex con l'elenco.Count-1. La vista elenco è vincolata a questa proprietà LastIndex di VM e l'elenco visualizza correttamente l'ultimo elemento aggiunto alla vista. Sfortunatamente, la vista non è in grado di scorrere l'ultimo elemento aggiunto in vista.Come visualizzare l'ultimo elemento della visualizzazione elenco aggiunto in WPF ListView

Ho provato a impostare IsSynchronizedWithCurrentItem = "True" sul markup della visualizzazione elenco, ma non è stato di aiuto.

Questo è il markup che sto 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> 

Qualsiasi aiuto in questo senso sarà molto apprezzato

risposta

15

è necessario chiamare ScrollIntoView:

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

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

EDIT :

Ed ecco un modo per farlo in XAML:

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

+0

Questo infatti risolto. Grazie mille .. – siva

+1

Stavo per farlo in XAML perché è il modo più corretto per MVVM ma è solo troppa roba da disturbare. Sono sorpreso che questa non è solo una proprietà che devi impostare su true o false a seconda se vuoi che l'ultima aggiunta sia messa a fuoco o meno. – LJNielsenDk

Problemi correlati