ITypedList 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供发现可绑定列表架构的功能,其中可用于绑定的属性不同于要绑定到的对象的公共属性。
public interface class ITypedList
public interface ITypedList
type ITypedList = interface
Public Interface ITypedList
- 派生
示例
以下代码示例演示如何实现 ITypedList 接口。 名为 SortableBindingList
的泛型类型派生于 BindingList<T> 类并实现 ITypedList 接口。 有关完整代码列表,请参阅 如何:实现 ITypedList 接口。
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;
namespace ITypedListCS
{
[Serializable()]
public class SortableBindingList<T> : BindingList<T>, ITypedList
{
[NonSerialized()]
private PropertyDescriptorCollection properties;
public SortableBindingList() : base()
{
// Get the 'shape' of the list.
// Only get the public properties marked with Browsable = true.
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(
typeof(T),
new Attribute[] { new BrowsableAttribute(true) });
// Sort the properties.
properties = pdc.Sort();
}
#region ITypedList Implementation
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{
PropertyDescriptorCollection pdc;
if (listAccessors!=null && listAccessors.Length>0)
{
// Return child list shape.
pdc = ListBindingHelper.GetListItemProperties(listAccessors[0].PropertyType);
}
else
{
// Return properties in sort order.
pdc = properties;
}
return pdc;
}
// This method is only used in the design-time framework
// and by the obsolete DataGrid control.
public string GetListName(PropertyDescriptor[] listAccessors)
{
return typeof(T).Name;
}
#endregion
}
}
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Windows.Forms
<Serializable()> _
Public Class SortableBindingList(Of Tkey)
Inherits BindingList(Of Tkey)
Implements ITypedList
<NonSerialized()> _
Private properties As PropertyDescriptorCollection
Public Sub New()
MyBase.New()
' Get the 'shape' of the list.
' Only get the public properties marked with Browsable = true.
Dim pdc As PropertyDescriptorCollection = TypeDescriptor.GetProperties(GetType(Tkey), New Attribute() {New BrowsableAttribute(True)})
' Sort the properties.
properties = pdc.Sort()
End Sub
#Region "ITypedList Implementation"
Public Function GetItemProperties(ByVal listAccessors() As System.ComponentModel.PropertyDescriptor) As System.ComponentModel.PropertyDescriptorCollection Implements System.ComponentModel.ITypedList.GetItemProperties
Dim pdc As PropertyDescriptorCollection
If (Not (listAccessors Is Nothing)) And (listAccessors.Length > 0) Then
' Return child list shape
pdc = ListBindingHelper.GetListItemProperties(listAccessors(0).PropertyType)
Else
' Return properties in sort order
pdc = properties
End If
Return pdc
End Function
' This method is only used in the design-time framework
' and by the obsolete DataGrid control.
Public Function GetListName( _
ByVal listAccessors() As PropertyDescriptor) As String _
Implements System.ComponentModel.ITypedList.GetListName
Return GetType(Tkey).Name
End Function
#End Region
End Class
注解
例如,如果使用的是DataView表示customer
表的 对象,则使用此接口,而想要绑定到 所表示的对象DataView上的customer
属性,而不是 的 属性DataView。
设计时支持可绑定列表不需要此接口。
绑定到数据可以在运行时或在设计器中发生,但两者都有规则。 在运行时,可以绑定到以下任一项中的数据:
如果实现者 IList具有强类型 Item[] 属性, (即 TypeObject 不是) , 可以通过将 默认实现 Item[] 设为私有来实现此目的。 如果要创建 IList 遵循强类型集合规则的 ,则应派生自 CollectionBase。
的 ITypedList实现者。
在设计器中,可以通过遵循相同的规则来初始化绑定到 Component 对象。
有关绑定到数据源的详细信息,请参阅 System.Windows.Forms.Binding 类。
方法
GetItemProperties(PropertyDescriptor[]) |
返回 PropertyDescriptorCollection,其表示每一项上用于绑定数据的属性。 |
GetListName(PropertyDescriptor[]) |
返回列表名称。 |