アイテムと呼ばれるプロパティを持つユーザーコントロールを作成しています。 Itemsは、LibraryPanelBarItemオブジェクトのコレクションを含むLibraryPanelBarItemCollection(カスタムクラス)タイプです。 VSがtreenodes/listviewitemsのようなものを追加するために使用するコレクションエディタを使用して、設計時にこれらを追加できます。理想的には、それらを宣言的にhtml構文に追加することもできます。表示するItemsプロパティを取得できますが、開始タグと終了タグの間にアイテムを追加するインテリセンスはありません。私は、次のプロパティがここ属性コレクションタイプユーザーコントロールのデザイン時に割り当て可能なプロパティ
<ParseChildren(True, "Items")> _
Public Class LibraryPanelBar
Inherits System.Web.UI.UserControl
<PersistenceMode(PersistenceMode.InnerDefaultProperty)> _
<Browsable(True)> _
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property Items As LibraryPanelBarItemCollection
...Do Some Stuff...
End Class
と宣言している私のユーザーコントロールで
はLibraryPanelBarItemとLibraryPanelBarItemCollection
Public Class LibraryPanelBarItem
<BindableAttribute(True)> _
Public Property ImageUrl As String
<BindableAttribute(True)> _
Public Property NavigateUrl As String
Public Property Text As String
Public Property Disabled As Boolean
Public Property ID As String
<PersistenceMode(PersistenceMode.InnerDefaultProperty)> _
Public Property Items As LibraryPanelBarItemCollection
Public ReadOnly Property HasChildren() As Boolean
Get
If Items.Count > 0 Then
Return True
Else
Return False
End If
End Get
End Property
Public Sub New()
Items = New LibraryPanelBarItemCollection
End Sub
End Class
Public Class LibraryPanelBarItemCollection
Inherits CollectionBase
Default Public ReadOnly Property Item(Index As Integer) As LibraryPanelBarItem
Get
Return DirectCast(List(Index), LibraryPanelBarItem)
End Get
End Property
Public Function Contains(itemType As LibraryPanelBarItem) As Boolean
Return List.Contains(itemType)
End Function
Public Function Add(itemType As LibraryPanelBarItem) As Integer
Return List.Add(itemType)
End Function
Public Sub Remove(itemType As LibraryPanelBarItem)
List.Remove(itemType)
End Sub
Public Sub Insert(index As Integer, itemType As LibraryPanelBarItem)
List.Insert(index, itemType)
End Sub
Public Function IndexOf(itemType As LibraryPanelBarItem) As Integer
Return List.IndexOf(itemType)
End Function
Public Sub New()
End Sub
End Class
のための私のカスタムクラスは、ここにあるのaspxファイル内の私の現在の宣言です:
<uc1:LibraryPanelBar ID="LibraryPanelBar2" runat="server">
<Items>
</Items>
</uc1:LibraryPanelBar>
まず、 'LibraryPanelBarItem'がそれ自身の再帰的リストを持つつもりでしたか? –
はい、LibraryPanelBarItemsには、LibraryPanelBarItemsのコレクションを持たせることができます。私がここで作成しようとしているのは、ナビゲーションに使用される一種のメニュー/ Outlookバーです。 – bechbd