C# Windows Phone-绑定到对象列表,然后向该列表添加新元素或操作现有对象

C# Windows Phone-绑定到对象列表,然后向该列表添加新元素或操作现有对象,c#,list,xaml,binding,windows-phone,C#,List,Xaml,Binding,Windows Phone,我的装订有问题。 基本上我有一个对象列表。我将长列表选择器的数据源绑定到该列表。出于某种奇怪的原因,我无法让长列表选择器显示任何内容。 当我的程序运行时,它从家庭自动化控制器中提取数据并将其传递到列表。这个过程会重复一段时间-提取新数据,添加到列表中。同时,我希望每次向列表中添加新元素时,都会更新长列表选择器。因此,如果我在第一次运行时设置绑定到的属性,那么每个连续运行只是向该属性添加一个新元素,基本上是一个列表,或者操作该列表中的一个元素。 经过广泛的故障排除,我知道这是一个通知问题,而不是绑

我的装订有问题。 基本上我有一个对象列表。我将长列表选择器的数据源绑定到该列表。出于某种奇怪的原因,我无法让长列表选择器显示任何内容。 当我的程序运行时,它从家庭自动化控制器中提取数据并将其传递到列表。这个过程会重复一段时间-提取新数据,添加到列表中。同时,我希望每次向列表中添加新元素时,都会更新长列表选择器。因此,如果我在第一次运行时设置绑定到的属性,那么每个连续运行只是向该属性添加一个新元素,基本上是一个列表,或者操作该列表中的一个元素。 经过广泛的故障排除,我知道这是一个通知问题,而不是绑定语法问题。我的计算方式是:我设置了一个断点,在这个断点处我重新分配了一个绑定到长列表选择器的列表。在这一点上,列表充满了元素,作为长列表选择器的数据源,长列表选择器显示了所有的数据

这里是我的问题:如果我将数据源绑定到一个列表,其中T是一个包含属性、其他列表和其他对象的复杂对象,并且如果我向该列表添加元素或对该列表中某个对象的属性进行更改,我如何通知XAML该更改,以便它更新长列表选择器?据我所知,我绑定到的列表是同一个对象,其中基础属性已更改,而不是对象本身,因此此代码无法工作:

protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
    {
        if (object.Equals(storage, value)) return false;

        storage = value;
        this.RaisePropertyChanged(propertyName);
        return true;

    }
我在一些参考资料中读到,最好将T列表更改为ObservableCollection,但是有人能告诉我是否可以用T列表来完成吗?我只是想了解它

谢谢

编辑:我使用了一个ObservableCollection,它的工作原理与List完全相同-没有更新长列表选择器。 有时候,最小的问题会带来最大的头痛——我已经为此挣扎了一周,似乎找不到解决办法。唯一可行的方法是,我创建一个新列表,并在每次迭代中用模型中的对象填充它,这在我看来是一个巨大的过度消耗。在每次迭代中,其中一个对象都会有一个小的变化——我觉得必须有一种不同的、更有效的方法来更新这个小的变化,而不是重写列表中所有其他未涉及的元素。
请帮忙

是的,您确实应该使用ObservableCollection,这是专门为数据绑定而构建的集合类型。如果您想了解它,那么MSDN几乎应该始终是您的第一个调用端口。。。非常感谢您的回复。我确实使用了ObservableCollection,但它并没有为我这么做:/UI中显示的每个小项目似乎都需要实现INotifyPropertyChanged并引发PropertyChangedEvent。