Ich habe eine ViewModel-Klasse, die eine Liste von Punkten enthält, und ich versuche, es an eine Polylinie zu binden. Die Polylinie nimmt die anfängliche Punktliste auf, merkt aber nicht, wenn zusätzliche Punkte hinzugefügt werden, obwohl ich INotifyPropertyChanged implementiere. Was ist los mit dir?Warum funktioniert diese Datenbindung nicht?
<StackPanel>
<Button Click="Button_Click">Add!</Button>
<Polyline x:Name="_line" Points="{Binding Pts}" Stroke="Black" StrokeThickness="5"/>
</StackPanel>
C# Seite:
// code-behind
_line.DataContext = new ViewModel();
private void Button_Click(object sender, RoutedEventArgs e)
{
// The problem is here: NOTHING HAPPENS ON-SCREEN!
((ViewModel)_line.DataContext).AddPoint();
}
// ViewModel class
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public PointCollection Pts { get; set; }
public ViewModel()
{
Pts = new PointCollection();
Pts.Add(new Point(1, 1));
Pts.Add(new Point(11, 11));
}
public void AddPoint()
{
Pts.Add(new Point(25, 13));
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Pts"));
}
}
Antwort aktualisiert, die Ursache gefunden. – Carlo