Voici mon code:WPF DataGrid n'est pas rendu correctement après la modification sous-jacente collection
<Grid>
<Button Content="Button" Click="button1_Click" />
<DataGrid ItemsSource ="{Binding Lst}" />
</Grid>
code-behind:
private void button1_Click(object sender, RoutedEventArgs e)
{
(this.DataContext as Some).remove();
}
DataSource est:
public class Some : INotifyPropertyChanged
{
private List<Point> lst = new List<Point>();
public List<Point> Lst
{
get
{
return lst;
}
}
public Some()
{
lst.Add(new Point(2.3, 5));
lst.Add(new Point(267.3, 5));
lst.Add(new Point(2.3, 65));
lst.Add(new Point(2.63, 885));
lst.Add(new Point(27.3, 65));
}
public void remove()
{
lst.Remove(lst.Last());
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Lst"));
}
public event PropertyChangedEventHandler PropertyChanged;
}
Quand j'appelle remove()
méthode , je supprime l'élément de la collection et invoque propertychanged. La réaction de l'interface utilisateur est: je ne peux pas sélectionner correctement les cellules dans le DataGrid qui correspondent à Point
. Ils sont et non supprimés. Cela ressemble à un bug de l'interface utilisateur, existe-t-il une solution de contournement?
Désolé pour c'est si sale - juste un échantillon rapide.
Merci, Ilya
Merci! Maintenant, je sais ce que ObservableCollection est utilisé pour :) –
La propriété de dépendance n'est pas nécessaire. Vous pouvez utiliser le modèle de vue simplement en implémentant les interfaces INotifyPropertyChanged et INotifyCollectionChanged. – Bulat