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 :
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>
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
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);
        }
    }
}
Merci d'avance pour votre aide.