ポイントのリストを含むViewModelクラスがあり、それをポリラインにバインドしようとしています。 Polylineは最初のポイントリストを取得しますが、INotifyPropertyChangedを実装しても追加ポイントが追加されたときには通知しません。どうしましたか?なぜこのデータバインディングは機能しませんか?
<StackPanel>
<Button Click="Button_Click">Add!</Button>
<Polyline x:Name="_line" Points="{Binding Pts}" Stroke="Black" StrokeThickness="5"/>
</StackPanel>
C#の方:
// 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"));
}
}
回答が更新され、原因が見つかりました。 – Carlo