2010-11-12 8 views
6

J'utilise un modèle de vue pour lier à la vue de la liste. Chaque fois que j'ajoute un élément dans la collection observable interne du modèle de vue, je déclenche une propriété LastIndex avec list.Count-1. La vue de liste est liée à cette propriété LastIndex de VM et la liste de sélection sélectionne correctement le dernier élément ajouté à la vue. Malheureusement, la vue ne peut pas faire défiler le dernier élément ajouté.Comment faire pour mettre dans la vue dernière liste ajouté voir l'article dans WPF ListView

J'ai essayé de définir IsSynchronizedWithCurrentItem = "True" sur le balisage de la vue de liste, mais cela n'a pas aidé.

C'est le balisage J'utilise

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

Toute aide à cet égard sera grandement appréciée

Répondre

15

Vous devez appeler ScrollIntoView:

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

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

EDIT :

Et voici une façon de le faire en XAML:

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

+0

En effet, cela a résolu. Merci à un million .. – siva

+1

J'allais le faire en XAML parce que c'est la façon la plus juste pour MVVM mais c'est juste trop de choses à déranger. Je suis surpris que ce n'est pas juste une propriété que vous devez définir sur true ou false, selon que vous voulez que le dernier ajout reste actif ou non. – LJNielsenDk

Questions connexes