這裏是我的代碼:WPF的DataGrid是不會改變之後正確地呈現底層集合
<Grid>
<Button Content="Button" Click="button1_Click" />
<DataGrid ItemsSource ="{Binding Lst}" />
</Grid>
代碼隱藏:
private void button1_Click(object sender, RoutedEventArgs e)
{
(this.DataContext as Some).remove();
}
數據源是:
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;
}
當我打電話remove()
方法,我從集合中刪除項目並調用propertychanged。 UI反應是:我無法正確選擇datagrid中對應於刪除的Point
的單元格。他們刪除了而不是。這看起來像UI錯誤,是否有任何解決方法?
對不起,它太髒了 - 只是一個快速樣品。
感謝,伊利亞
謝謝!現在我知道ObservableCollection用於什麼:) – 2010-11-18 07:18:11
依賴項屬性不是必需的。您只需通過實現INotifyPropertyChanged和INotifyCollectionChanged接口即可使用視圖模型。 – Bulat 2010-11-18 07:29:52