我的ObservableCollection类有问题。我无法解决这个问题。
using System.Collections.ObjectModel;
#region ViewModelProperty: CustomerList
private ObservableCollection<T> _customerList = new ObservableCollection<T>();
public ObservableCollection<T> CustomerList
{
get
{
return _customerList;
}
set
{
_customerList = value;
OnPropertyChanged("CustomerList");
}
}
#endregion
我的ObservableCollection类继承了ViewModelBase:
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
任何想法,问题出在哪里?
答案 0 :(得分:2)
T
只是一个占位符。您需要为T
提供实际类型。
E.g。如果您有List<T>
,则可以设置List<int>
或List<string>
(T
是符合给定约束条件的任何其他类型)。即T
在第一种情况下为int
,在第二种情况下为string
。
答案 1 :(得分:0)
我认为,当您在Generics
上阅读时,您会清楚地知道你可以这样做:
ObservableCollection<Customer> customerList = new ObservableCollection<Customer>()
然后,您有一个类型集合,它将能够存储Customer类的实例(以及从Customer继承的子类的实例)。 因此,如果您希望有一个集合,您希望能够添加多个类型的实例,您可以创建一个基类(或接口),并从该基类继承或实现此接口,并创建一个ObservableCollection例如
答案 2 :(得分:-1)
如前所述,T是占位符。你可能想要这样的东西:
private ObservableCollection<T> _customerList = new ObservableCollection < ClassYouWantObserved > ();