2

我对 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));
      }
    }
  }

任何想法,问题出在哪里?

4

3 回答 3

4

T只是一个占位符。您需要在某处为T.

例如,如果您有List<T>,您可以制作一个List<int>or List<string>(T是适合给定约束的任何其他类型)。即Tint第一种情况和string第二种情况下。

于 2009-08-14T07:34:34.113 回答
0

我认为当您阅读有关泛型的一些内容时,您会很清楚

你可以这样做:

ObservableCollection<Customer> customerList = new ObservableCollection<Customer>()

然后,您有一个类型化的集合,它将能够存储 Customer 类的实例(以及从 Customer 继承的子类的实例)。所以,如果你想有一个集合,你希望能够添加多种类型的实例,你可以创建一个基类(或接口),并从该基类继承或实现这个接口,并创建一个 ObservableCollection例如前。

于 2009-08-14T07:37:52.110 回答
-1

如前所述, T 是一个占位符。你可能想要这样的东西:

private ObservableCollection<T> _customerList = new ObservableCollection < ClassYouWantObserved > ();
于 2009-08-14T07:37:29.893 回答