Ceci est vraiment particulier. J'ai essayé un simple exemple de programme de liaison de données. J'ai essayé de lier une collection (IList) à une zone de liste. Lorsque je modifie la collection, la zone de liste est mise à jour uniquement si je maximise la fenêtre. Voici les extraits,DataSource reflété après avoir maximisé la fenêtre dans wpf
<ListBox x:Name="myBirthdaysListBox" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<UniformGrid>
<Label Content="{Binding Name}"></Label>
<Label Content="{Binding DateOfBirth}"></Label>
</UniformGrid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public Window1()
{
InitializeComponent();
myCalendar = new List<Calendar>();
myBirthdaysListBox.DataContext = myCalendar;
}
Je suis juste un débutant en wpf. Veuillez me le faire savoir, si j'ai fait quelque chose de terriblement mal ici.
Oui, cela semble fonctionner (j'ai remplacé la liste avec BindingList). Si je veux rester dans la liste, est-ce que ma classe Calendar devrait hériter de l'interface INotifyPropertyChanged ?? J'ai essayé de le faire, ça n'a aucun effet. Peux-tu m'expliquer pourquoi? – sudarsanyes
À quoi ressemble votre implémentation de INotifyPropertyChanged? –
if (PropertyChanged! = Null) {PropertyChanged (this, new PropertyChangedEventArgs ("Nom")); PropertyChanged (this, new PropertyChangedEventArgs ("DateOfBirth")); } J'ai ajouté cela au constructeur de la classe Calendar car c'est le seul endroit d'où vous pouvez définir les valeurs des champs. Donc, je soulève PropertyChanged pour les deux champs – sudarsanyes