C# WPF数据网格绑定到列表<;类型>;

C# WPF数据网格绑定到列表<;类型>;,c#,wpf,datagrid,C#,Wpf,Datagrid,我正在尝试将WPFDataGrid绑定到列表 下面是我的DataGrid: <DataGrid ItemsSource="{Binding Source=FileProcessing}" AutoGenerateColumns="True"></DataGrid> 文件处理定义为以下属性: public List<FileProcessing_T> FileProcessing { get; set; } 公共列表文件处理{get;set;} GetFi

我正在尝试将WPF
DataGrid
绑定到
列表

下面是我的
DataGrid

<DataGrid ItemsSource="{Binding Source=FileProcessing}" AutoGenerateColumns="True"></DataGrid>

文件处理
定义为以下属性:

public List<FileProcessing_T> FileProcessing { get; set; }
公共列表文件处理{get;set;}
GetFileProcessingInfo
方法还返回一个
List
对象

FileProcessing
列表确实从数据库中获取了一些记录,但网格没有绑定列表中的数据


非常感谢您的帮助。

您可以保留您的数据绑定

但是您必须在
FileProcessing
属性所在的类中实现
INotfifyPropertyChanged
接口。 因为在
文件处理的setter中,您必须执行更改通知

    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));
        }
    }
公共ObservableCollection文件处理
{
得到
{
返回文件处理;
}
设置
{
if(_fileProcessing!=值)
{
_文件处理=值;
RaisePropertyChanged(“文件处理”);
}
}
}
可观察收集(文件处理);;
公共事件PropertyChangedEventHandler PropertyChanged=委托{};
public void RaisePropertyChanged(字符串propertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(propertyName));
}
}
否则,UI控件将不知道(不会得到通知)绑定数据已更改


这将足以解决您的问题。
如果您继续使用
List
而不是
ObservableCollection
,它甚至会起作用,但是
ObservableCollection
也支持更改通知,如果从集合中添加和删除单个元素,而
List
则不支持。

List
更改为
ObservableCollection
,看看这是否有帮助?是的,可观察收集更好。无论如何,我认为问题在于列表元素的类型与网格不兼容。您可以发布文件处理信息吗?
FileProcessing
是一个属性,因此看起来应该是
Path
,而不是
Source
。当然,源应该是具有属性
FileProcessing
的对象。这里的源应该是一个视图模型,并通过
DataContext
隐式地沿着树向下流动,我对此进行了备份。如果不清楚,“隐式”是这里的关键词-只有当
source
RelativeSource
,或者
ElementName
属性都没有显式设置时,(继承的)
DataContext
才被用作绑定的源代码。@Grx70我的意思是可以通过DataContext隐式设置源代码,这有意义吗?事实上,它可能没有被设置,但是
绑定
将需要一些源代码,这并不完全意味着
源代码
属性。非常感谢大家。马丁:你的解决方案帮助了我。
    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));
        }
    }