J'essaye d'implémenter un WebControl composite personnalisé avec des propriétés "imbriquées", c'est-à-dire, encapsuler un groupe de propriétés dans une classe.ASP.NET Custom WebControl Propriétés imbriquées en tant qu'objet
Par exemple, dans ce contrôle composite, j'ai placé un bouton. Je voudrais pouvoir encapsuler des propriétés pertinentes pour le bouton dans une classe (par exemple, buttonText, buttonStyle, etc.). Cela rendrait la définition des propriétés dans multi-bouton/contrôle composite-contrôle plus facile et cohérente et intuitive.
Remarque: Je souhaite que les propriétés encapsulées apparaissent groupées dans la boîte de dialogue Propriétés de VisualStudio, d'une manière très similaire à Style/Police.
Exemple:
public class fooButtonProperties
{
[Category("Appearance"), Description("URL for the Profile page")]
public string URL { get; set; }
[Category("Appearance"), Description("Text to display"), DefaultValue("Profile")]
public string ButtonText { get; set; }
/// <summary>
/// Position of the control on the page, default is Right-Aligned
/// </summary>
[Category("Appearance"), Description("Position in the Header"), DefaultValue(PIONEERFramework.Web.UI.WebControls.PageHeaderFooter.Classes.DesignEnum.DesignLayoutEnums.HorizontalPositions.Right)]
///Here is the composite control
public PIONEERFramework.Web.UI.WebControls.PageHeaderFooter.Classes.DesignEnum.DesignLayoutEnums.HorizontalPositions PositionInHeader { get; set; }
}
public class myCustomClass: System.Web.UI.WebControls.CompositeControl
{
protected System.Web.UI.HtmlControls.HtmlLink myButton;
[Category("Appearance")]
public fooButtonProperties myButtonProperties { get { return _profileButtonProp; } }
private fooButtonProperties _myeButtonProp;
#region Constructor
public myCustomClass()
{
this._myeButtonProp = new fooButtonProperties();
}
#endregion
}
Malheureusement, cette approche dos fonctionne pas. La nouvelle propriété myButtonProperties n'apparaît pas du tout dans la boîte de dialogue "Properies".