Je crée un contrôle utilisateur dans lequel j'ai une propriété appelée Items. Items est de type LibraryPanelBarItemCollection (classe personnalisée) qui contient une collection d'objets LibraryPanelBarItem. Je voudrais pouvoir les ajouter au moment de la conception en utilisant l'éditeur de collection que VS utilise pour ajouter des éléments tels que treenodes/listviewitems. Idéalement, je serais également en mesure de les ajouter de manière déclarative à la syntaxe html. Je peux obtenir la propriété Items à afficher, mais je n'ai aucun intellisense pour ajouter les éléments entre les balises d'ouverture et de fermeture.Type de collection Propriété affectable au moment du design dans le contrôle utilisateur
Dans mon contrôle utilisateur J'ai la propriété suivante déclarée avec les attributs
<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
Voici mes classes personnalisées pour le LibraryPanelBarItem et 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
Voici ma déclaration en cours dans le fichier ASPX :
<uc1:LibraryPanelBar ID="LibraryPanelBar2" runat="server">
<Items>
</Items>
</uc1:LibraryPanelBar>
Tout d'abord, aviez-vous l'intention de 'LibraryPanelBarItem' d'avoir des listes récursives possibles de lui-même? –
Oui, un LibraryPanelBarItems peut avoir une collection de LibraryPanelBarItems. Ce que j'essaye de créer ici est une sorte de barre de Menu/Outlook utilisée pour la navigation. – bechbd