大家好我是WPF的新手,我有一个小问题,希望你能帮助我。
我在父窗口中有一个DataGrid ..当我打开一个弹出窗口并选择一个项目时,弹出窗口关闭,父窗口中的DataGrid用所选项目更新。
我的问题是当我设置DataGrid的ItemSource属性时,它只在第一次工作,但是当我添加其他项并设置DataGrid的ItemSource时,它不会更新Grid,虽然它绑定的List已更新。
我想知道是否有像ASP.Net GridView
这样的DataBind()方法答案 0 :(得分:2)
在WPF中,您的班级通常需要实施INotifyPropertyChanged。此接口公开PropertyChanged事件,该事件在属性发生更改时“通知”。
以下是CodeProject
的示例// Declare the PropertyChanged event
public event PropertyChangedEventHandler PropertyChanged;
// OnPropertyChanged will raise the PropertyChanged event passing the
// source property that is being updated.
private void OnPropertyChanged(object sender, string propertyName)
{
if (this.PropertyChanged != null)
{
PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
}
}
您通常在setter中为绑定属性调用这样的方法。
你可以像Henk建议的那样使用ObservableCollection,因为ObservableCollection实现了这个接口并且内置了关于更改的通知(添加,删除等)。请注意,创建新的ObservableCollection不会引发通知
this.BindingCollection = new ObservableCollection(myList);
所以你必须自己提出通知
OnPropertyChanged(this, "BindingCollection");
答案 1 :(得分:1)
您使用的是哪种列表?
它应该像你在使用ObservableCollection时描述的那样工作。