Je cherche à binder deux TextBox en fonction de ma ligne sélectionnée dans mon DataGrid.
J'ai beau lire et relire mon code, je n'arrive pas à voir où ça déconne
La vue :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <DockPanel> <DataGrid Name="person" ItemsSource="{Binding Persons}" SelectedItem="{Binding SelectedPerson}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn> <DataGridTextColumn Header="FirstName" Binding="{Binding FirstName}"></DataGridTextColumn> <DataGridTextColumn Header="Birth date" Binding="{Binding BirthDate}"></DataGridTextColumn> <DataGridTextColumn Header="Age" Binding="{Binding Age}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid> <StackPanel> <TextBox Name="name" Text="{Binding SelectedPerson.Name}" Width="100" Margin="10"></TextBox> <TextBox Name="firstname" Text="{Binding SelectedPerson.FirstName}" Width="100"></TextBox> </StackPanel> </DockPanel>
Le code behind :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public MainWindow() { InitializeComponent(); PersonsVM p = new PersonsVM(); p.Persons.Add(new Person("Germez", "Sébastien", new DateTime(1988, 04, 13))); DataContext = p; }
Et les classes PersonsVM et Person :
Code C# : 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
43 public class PersonsVM : INotifyPropertyChanged { public List<Person> Persons { get; set; } public Person SelectedPerson { get; set; } public PersonsVM() { this.Persons = new List<Person>(); this.SelectedPerson = new Person(); } private void RaisePropertyChanged(String property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(property)); } public event PropertyChangedEventHandler PropertyChanged; } public class Person { public string Name { get; set; } public string FirstName { get; set; } public DateTime BirthDate { get; set; } public int Age { get; set; } public Person() { } public Person(string name, string firstName, DateTime birthDate) { this.Name = name; this.FirstName = firstName; this.BirthDate = birthDate; DateTime today = DateTime.Today; int age = today.Year - birthDate.Year; if (today < birthDate.AddYears(age)) age--; this.Age = age; } }
Si quelqu'un pouvait m'éclairer... Je n'ai aucune erreur mais lorsque je sélectionne ma ligne, mes deux TextBox restent vides
![]()
Partager