我尝试将WPF DataGrid
绑定到List<ClassName>
。
以下是我的DataGrid
:
<DataGrid ItemsSource="{Binding Source=FileProcessing}" AutoGenerateColumns="True"></DataGrid>
下面我将列表与数据库记录绑定在一起:
FileProcessing = GetFileProcessingInfo(dtDateStart, dtDateEnd);
FileProcessing
被定义为以下属性:
public List<FileProcessing_T> FileProcessing { get; set; }
GetFileProcessingInfo
方法还会返回List<FileProcessing_T>
个对象。
FileProcessing
列表确实从数据库中获取了一些记录,但网格没有绑定列表中的数据。
感谢您的帮助。
答案 0 :(得分:1)
您可以保留数据绑定。
但是你必须在INotfifyPropertyChanged
属性所在的类中实现FileProcessing
接口。
因为在FileProcessing
的设置者中,您必须执行更改通知。
public ObservableCollection<FileProcessing_T> FileProcessing
{
get
{
return _fileProcessing;
}
set
{
if (_fileProcessing != value)
{
_fileProcessing = value;
RaisePropertyChanged("FileProcessing");
}
}
}
ObservableCollection<FileProcessing_T> _fileProcessing;
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
否则UI控件将不知道(未通知)绑定数据已更改。
这足以解决您的问题。
如果您继续使用List<FileProcessing_T>
而不是ObservableCollection<FileProcessing_T>
,它甚至可以使用,但如果在ObservableCollection
期间添加单个元素并从集合中删除,List
也支持更改通知不