File: Base\System\ComponentModel\IItemProperties.cs
Project: wpf\src\WindowsBase.csproj (WindowsBase)
//---------------------------------------------------------------------------
//
// <copyright file="IEditableCollectionView.cs" company="Microsoft">
//    Copyright (C) 2007 by Microsoft Corporation.  All rights reserved.
// </copyright>
//
//
// Description: Editing functionality for collection views.
//
// See spec at http://sharepoint/sites/wpftsv/Documents/DataGrid/DataGrid_CollectionView.mht
//
//---------------------------------------------------------------------------
 
using System;
using System.Collections.ObjectModel;   // ReadOnlyCollection<T>
 
namespace System.ComponentModel
{
 
/// <summary>
/// IItemProperties is an interface that a collection view
/// can implement to expose information about the properties available on
/// items in the underlying collection.
/// </summary>
public interface IItemProperties
{
    /// <summary>
    /// Returns information about the properties available on items in the
    /// underlying collection.  This information may come from a schema, from
    /// a type descriptor, from a representative item, or from some other source
    /// known to the view.
    /// </summary>
    ReadOnlyCollection<ItemPropertyInfo>    ItemProperties { get; }
}
 
/// <summary>
/// Information about a property.  Returned by <seealso cref="IItemProperties.ItemProperties"/>
/// </summary>
public class ItemPropertyInfo
{
    /// <summary> Creates a new instance of ItemPropertyInfo. </summary>
    public ItemPropertyInfo(string name, Type type, object descriptor)
    {
        _name = name;
        _type = type;
        _descriptor = descriptor;
    }
 
    /// <summary> The property's name. </summary>
    public string  Name { get { return _name; } }
 
    /// <summary> The property's type. </summary>
    public Type    PropertyType { get { return _type; } }
 
    /// <summary> More information about the property.  This may be null,
    /// the view is unable to provide any more information.  Or it may be
    /// an object that describes the property, such as a PropertyDescriptor,
    /// a PropertyInfo, or the like.
    /// </summary>
    public object  Descriptor { get { return _descriptor; } }
 
    string _name;
    Type _type;
    object _descriptor;
}
 
}