Bonjour, je suis actuellement en train de développer un programme qui demande à un utilisateur de se connecter (login/mot de passe). Lorsque les identifiants sont corrects, la fenêtre de login se ferme et une autre apparaît, contenant une ListBox. Je tente de la remplir lors d'un clic sur le bouton login, en vain.
Voici la fonction qui est appelée lorsque l'utilisateur peut se connecter :
CloseSignal permet de fermer la fenêtre et fonctionne, la fonction est donc appelée. Une instance de la nouvelle vue et son modèle est appelée, puis la fenêtre est affichée, ce qui fonctionne. J'essaye d'appeler GetPersons() de ListViewModel, ce qui mène ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void LoginAccess() { DataAccess.Users users = new DataAccess.Users(); if (users.TestUser(Login, Password)) { View.ListView window = new View.ListView(); ViewModel.ListViewModel vm = new ListViewModel(); window.DataContext = vm; vm.GetPersons(); window.Show(); CloseSignal = true; } }
J'ai essayé d'appliquer le binding à ListView :
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 namespace WPF_MVVM.ViewModel { public class ListViewModel : INotifyPropertyChanged { private ObservableCollection<Person> _DataCollection; public event PropertyChangedEventHandler PropertyChanged; public ListViewModel() { } public void GetPersons() { ObservableCollection<Person> pers = new ObservableCollection<Person>(); pers.Add(Person.CreatePerson("nom", "21", "prenom")); DataCollection = pers; } protected void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } public ObservableCollection<Person> DataCollection { get { return _DataCollection; } set { _DataCollection = value; OnPropertyChanged("DataCollection"); } } } }
Person est un modèle banal contenant trois string et CreatePerson retourne un objet de type Person. Savez-vous où j'ai fait une erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <Window x:Class="WPF_MVVM.View.ListView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ListView" Height="300" Width="300" xmlns:vm="clr-namespace:WPF_MVVM.ViewModel"> <Window.Resources> <vm:ListViewModel x:Key="viewModel"/> </Window.Resources> <Grid> <ListBox HorizontalAlignment="Left" Height="100" Margin="96,84,0,0" VerticalAlignment="Top" Width="100" Name="lstData" DisplayMemberPath="PersonName" ItemsSource="{Binding Source={StaticResource viewModel}, Path=DataCollection}"/> </Grid> </Window>
Merci de votre aide
Partager