C# WPF MVVM已更新元素未更新GUI

C# WPF MVVM已更新元素未更新GUI,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我有一门课是这样的: public class ResourceList : ObservableCollection<Resource> { public ResourceList() : base() { } } public class Resource { public Resource() { Name = ""; EMail = ""; Date = ""; Time

我有一门课是这样的:

public class ResourceList : ObservableCollection<Resource>
{
    public ResourceList() : base()
    {
    }
}

public class Resource
{
    public Resource()
    {
        Name = "";
        EMail = "";
        Date = "";
        Time = "";
        SWList = new ObservableCollection<string>();
    }
    public string Name { get; set; }
    public string EMail { get; set; }
    public string Date { get; set; }
    public string Time { get; set; }
    public ObservableCollection<string> SWList { get; set; }
}

public class Licenses : ObservableCollection<Licenses>
{
    public Licenses()
    {
    }
    public string Name { get; set; }
    public string License { get; set; }
}
public bool CanUpdate
{
    get
    {
        if (ResourceList == null)
        {
            return false;
        }
        return true;
    }
}

public ResourceList ResourceList
{
    get
    {
        return _ResourceList;
    }
    set
    {
        if (value == _ResourceList)
            return;

        _ResourceList = value;

        // INotifyPropertyChanged Method for updating the binding
        onPropertyChanged("ResourceList");
    }
}
我的viewModel
CanUpdate
ResourceList
如下所示:

public class ResourceList : ObservableCollection<Resource>
{
    public ResourceList() : base()
    {
    }
}

public class Resource
{
    public Resource()
    {
        Name = "";
        EMail = "";
        Date = "";
        Time = "";
        SWList = new ObservableCollection<string>();
    }
    public string Name { get; set; }
    public string EMail { get; set; }
    public string Date { get; set; }
    public string Time { get; set; }
    public ObservableCollection<string> SWList { get; set; }
}

public class Licenses : ObservableCollection<Licenses>
{
    public Licenses()
    {
    }
    public string Name { get; set; }
    public string License { get; set; }
}
public bool CanUpdate
{
    get
    {
        if (ResourceList == null)
        {
            return false;
        }
        return true;
    }
}

public ResourceList ResourceList
{
    get
    {
        return _ResourceList;
    }
    set
    {
        if (value == _ResourceList)
            return;

        _ResourceList = value;

        // INotifyPropertyChanged Method for updating the binding
        onPropertyChanged("ResourceList");
    }
}
现在,实际问题是: 当执行第一个命令时,无论是哪个命令,都会填充GUI中的listView,并且一切正常。但是当执行另一个命令时(实际上更新了同一列表中的元素,所有元素的时间和日期属性都将被更新),列表视图将不会更新其元素

我知道我没有改变整个列表,我正在更新其中的一些元素,这可能就是为什么它没有被更新的原因。但我真的不知道该怎么做?
请解释我应该如何修改代码

资源类未实现INotifyPropertyChanged

此接口将通知视图资源实例的更改。就像ObservableCollection通知视图集合的更改一样(添加、删除、移动项目)

公共类资源:INotifyPropertyChanged
{
公共资源()
{
Name=“”;
电子邮件=”;
日期=”;
时间=”;
SWList=新的ObservableCollection();
}
//TODO:对所有属性执行此操作:
私有字符串名称;
公共字符串名
{
获取{返回名称;}
设置
{
如果(名称!=值)
{
名称=值;
不动产变更(“名称”);
}
}
}
受保护的无效OnPropertyChanged(字符串propertyName)
{
var handler=PropertyChanged;
if(处理程序!=null)
{
处理程序(此,新的PropertyChangedEventArgs(propertyName);
}
}
}

正如我所指出的,我对所有这些都是新手。你能用代码详细说明一下吗?@theAlse-我刚刚添加了一个例子。请注意,有几种方法可以实现InotifyPropertyChanged,这只是其中之一,也是最直接的方法。搜索更多实现(和讨论)在此站点上。顺便说一句:您可能还需要更改许可证类别。只是想澄清一下:由于列表初始化时引发了PropertyChanged事件,因此第一次更新成功。