IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Défilement automatique dans une ListView


Sujet :

Windows Presentation Foundation

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Défilement automatique dans une ListView
    Bonjour,

    Je cherche à avoir une liste qui défile automatiquement à la fin lorsqu'on ajoute une nouvelle ligne.

    Auriez-vous une solution ou une piste pour résoudre mon problème ?
    J'ai fait un exemple simple dans lequel je voudrais l'intégrer :

    Modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    public class Student
        {
            public string Lastname {get; set;}
            public string Firstname {get; set;}
     
            public Student(string lastname, string firstname) {
                this.Lastname = lastname;
                this.Firstname = firstname;
     
            }
        }
     
        public class StudentsModel: ObservableCollection<Student>
        {
            private static object _threadLock = new Object();
            private static StudentsModel current = null;
     
            public static StudentsModel Current {
                get {
                    lock (_threadLock)
                    if (current == null)
                        current = new StudentsModel();
     
                    return current;
                }
            }
     
            private StudentsModel() {
     
                for (int i = 1; i <= 50; i++)
                {
                    Student aStudent = new Student("Student " + i.ToString(), "Student " + i.ToString());
                    Add(aStudent);
                }
            }
     
            public void AddAStudent(String lastname, string firstname) {
                Student aNewStudent = new Student(lastname, firstname);
                Add(aNewStudent);
            }
        }
    Vue Modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
        public class MainViewModel : ViewModelBase
        {
     
            public StudentsModel Students { get; set; }
     
            public MainViewModel()
            {
                Students = StudentsModel.Current;
            }
     
            private ICommand _AddStudent;
            public ICommand AddStudent
            {
                get
                {
                    if (_AddStudent == null)
                    {
                        _AddStudent = new DelegateCommand(delegate()
                        {
                            Students.AddAStudent("New Student lastname", "New Student firstname");
                        });
                    }
     
                    return _AddStudent;
                }
            }
    Vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <Window x:Class="demo.Views.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:c="clr-namespace:demo.Commands">
        <Grid>
            <ListView  Grid.Row="2" BorderBrush="White" ItemsSource="{Binding Path=Students}"
                       HorizontalAlignment="Stretch">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Lastname" DisplayMemberBinding="{Binding Path=Lastname}" />
                        <GridViewColumn Header="Firstname" DisplayMemberBinding="{Binding Path=Firstname}" />
     
                    </GridView>
                </ListView.View>
            </ListView >
            <Button Content="Add" Command="{Binding AddStudent}" Margin="601.94,36.866,96.567,419.403" />
        </Grid>
    </Window>
    Merci

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Tu peux utiliser la méthode ScrollIntoView.
    Il faut l'invoquer après que le nouvel item a été généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.ItemContainerGenerator.ItemsChanged += (s, a) => list.ScrollIntoView(list.Items[list.Items.Count - 1]);
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

Discussions similaires

  1. Focus automatique dans une listview lors d'un SelectedItems
    Par Chacha35 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/09/2009, 11h19
  2. Afficher un Hint dans une ListView
    Par Larion dans le forum C++Builder
    Réponses: 13
    Dernier message: 13/03/2005, 13h45
  3. [C#] [WinForms] Redimensionnement automatique d'une ListView
    Par Phenomenium dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/02/2005, 11h43
  4. [VB.NET] Objet .Tag dans une ListView
    Par Lois dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/10/2004, 16h35
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo