Bonjour,
Je suis en train de plus ou moins débuter en WPF et j'en suis au Data Binding. Je suis sur un exemple de https://wpf-tutorial.com/fr/38/data-...x-changements/
Cela fonctionne très bien, mais moi je voudrais rafraichir un TextBlock et un Label après que la source de données ait changé, mais cela ne fonctionne pas. Est-ce que quelqu'un pourrait me dire pourquoi, parce que je pédale un peu dans la semoule depuis un bon moment :-(
Voici la partie XAML :
Et là la partie Code Behind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <Grid Margin="10"> <Button Name="btnAddUser" Click="btnAddUser_Click" Margin="650,0,0,371">Add user</Button> <Button Name="btnChangeUser" Click="btnChangeUser_Click" Margin="650,59,0,313">Change user</Button> <Button Name="btnDeleteUser" Click="btnDeleteUser_Click" Margin="650,116,0,255">Delete user</Button> <ListBox Name="lbUsers" DisplayMemberPath="Name" BorderBrush="Black" BorderThickness="1 1 1 1" Height="192" Width="300" Margin="10,15,470,207" ></ListBox> <TextBox x:Name="tbNom" HorizontalAlignment="Left" Margin="52,287,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="152" Height="25" FontSize="16"/> <TextBlock x:Name="tbCopie" VerticalAlignment="Top" Width="202" Height="25" FontSize="16" Margin="289,282,289,0" Text="{Binding Path=users[1].Name}" /> <Label x:Name="lblCopie" BorderBrush="Black" BorderThickness="1 1 1 1" Content="{Binding Path=users[1].Name}" HorizontalAlignment="Left" Margin="273,339,0,0" VerticalAlignment="Top" Height="37" Width="140"/> </Grid>
Merci d'avance pour votre aide.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 namespace WpfTuto { /// <summary> /// Logique d'interaction pour WinUpdateSource.xaml /// </summary> public partial class WinUpdateSource : Window { public class User : INotifyPropertyChanged { private string name; public string Name { get { return this.name; } set { if (this.name != value) { this.name = value; this.NotifyPropertyChanged("Name"); } } } public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propName) { if (this.PropertyChanged != null) this.PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } // private List<User> users = new List<User>(); private ObservableCollection<User> users = new ObservableCollection<User>(); public WinUpdateSource() { InitializeComponent(); users.Add(new User() { Name = "John Doe" }); users.Add(new User() { Name = "Jane Doe" }); tbCopie.Text = users[1].Name; lblCopie.Content = users[1].Name; lbUsers.ItemsSource = users; } private void btnAddUser_Click(object sender, RoutedEventArgs e) { users.Add(new User() { Name = tbNom.Text }); } private void btnChangeUser_Click(object sender, RoutedEventArgs e) { if (lbUsers.SelectedItem != null) (lbUsers.SelectedItem as User).Name = "Random Name"; } private void btnDeleteUser_Click(object sender, RoutedEventArgs e) { if (lbUsers.SelectedItem != null) users.Remove(lbUsers.SelectedItem as User); } } }
Partager