MenuItem Classe

Definizione

Rappresenta una voce di menu visualizzata nel controllo Menu. La classe non può essere ereditata.

public ref class MenuItem sealed : ICloneable, System::Web::UI::IStateManager
public sealed class MenuItem : ICloneable, System.Web.UI.IStateManager
type MenuItem = class
    interface IStateManager
    interface ICloneable
Public NotInheritable Class MenuItem
Implements ICloneable, IStateManager
Ereditarietà
MenuItem
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come popolare un Menu controllo con oggetti statici usando la sintassi dichiarativa MenuItem .


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>MenuItem Declarative Example</h3>
    
      <!-- Use declarative syntax to create the   -->
      <!-- menu structure. Create submenu items   -->
      <!-- by nesting them within parent menu     -->
      <!-- items.                                 -->
      <asp:menu id="NavigationMenu"
        staticdisplaylevels="1"
        staticsubmenuindent="10" 
        orientation="Vertical" 
        target="_blank"  
        runat="server">

        <items>
          <asp:menuitem navigateurl="Home.aspx" 
            text="Home"
            imageurl="Images\Home.gif"
            popoutimageurl="Images\Popout.jpg"   
            tooltip="Home">
            <asp:menuitem navigateurl="Music.aspx"
              text="Music"
              popoutimageurl="Images\Popout.jpg"
              tooltip="Music">
              <asp:menuitem navigateurl="Classical.aspx" 
                text="Classical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Classical"/>
              <asp:menuitem navigateurl="Rock.aspx"
                text="Rock"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Rock"/>
              <asp:menuitem navigateurl="Jazz.aspx"
                text="Jazz"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Jazz"/>
            </asp:menuitem>
            <asp:menuitem navigateurl="Movies.aspx"
              text="Movies"
              popoutimageurl="Images\Popout.jpg"              
              tooltip="Movies">
              <asp:menuitem navigateurl="Action.aspx"
                text="Action"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Action"/>
              <asp:menuitem navigateurl="Drama.aspx"
                text="Drama"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Drama"/>
              <asp:menuitem navigateurl="Musical.aspx"
                text="Musical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Musical"/>
            </asp:menuitem>
          </asp:menuitem>
        </items>
      
      </asp:menu>

    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>MenuItem Declarative Example</h3>
    
      <!-- Use declarative syntax to create the   -->
      <!-- menu structure. Create submenu items   -->
      <!-- by nesting them within parent menu     -->
      <!-- items.                                 -->
      <asp:menu id="NavigationMenu"
        staticdisplaylevels="1"
        staticsubmenuindent="10" 
        orientation="Vertical" 
        target="_blank"  
        runat="server">

        <items>
          <asp:menuitem navigateurl="Home.aspx" 
            text="Home"
            imageurl="Images\Home.gif"
            popoutimageurl="Images\Popout.jpg"   
            tooltip="Home">
            <asp:menuitem navigateurl="Music.aspx"
              text="Music"
              popoutimageurl="Images\Popout.jpg"
              tooltip="Music">
              <asp:menuitem navigateurl="Classical.aspx" 
                text="Classical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Classical"/>
              <asp:menuitem navigateurl="Rock.aspx"
                text="Rock"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Rock"/>
              <asp:menuitem navigateurl="Jazz.aspx"
                text="Jazz"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Jazz"/>
            </asp:menuitem>
            <asp:menuitem navigateurl="Movies.aspx"
              text="Movies"
              popoutimageurl="Images\Popout.jpg"              
              tooltip="Movies">
              <asp:menuitem navigateurl="Action.aspx"
                text="Action"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Action"/>
              <asp:menuitem navigateurl="Drama.aspx"
                text="Drama"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Drama"/>
              <asp:menuitem navigateurl="Musical.aspx"
                text="Musical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Musical"/>
            </asp:menuitem>
          </asp:menuitem>
        </items>
      
      </asp:menu>

    </form>
  </body>
</html>

Nell'esempio seguente viene illustrato come associare un Menu controllo a un SiteMapDataSource controllo. Se associato a un'origine dati, il Menu controllo crea automaticamente gli MenuItem oggetti. Per il corretto funzionamento di questo esempio, è necessario copiare i dati della mappa del sito di esempio seguenti in un file denominato Web.sitemap.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" runat="server">
    
      <h3>Menu DataBinding Example</h3>
    
      <!-- Bind the Menu control to a SiteMapDataSource control.  -->
      <asp:menu id="NavigationMenu"
        disappearafter="2000"
        staticdisplaylevels="2"
        staticsubmenuindent="10" 
        orientation="Vertical"
        font-names="Arial" 
        target="_blank"
        datasourceid="MenuSource"   
        runat="server">
        
        <staticmenuitemstyle backcolor="LightSteelBlue"
          forecolor="Black"/>
        <statichoverstyle backcolor="LightSkyBlue"/>
        <dynamicmenuitemstyle backcolor="Black"
          forecolor="Silver"/>
        <dynamichoverstyle backcolor="LightSkyBlue"
          forecolor="Black"/>

      </asp:menu>
      
      <asp:SiteMapDataSource id="MenuSource"
        runat="server"/>        

    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" runat="server">
    
      <h3>Menu DataBinding Example</h3>
    
      <!-- Bind the Menu control to a SiteMapDataSource control.  -->
      <asp:menu id="NavigationMenu"
        disappearafter="2000"
        staticdisplaylevels="2"
        staticsubmenuindent="10" 
        orientation="Vertical"
        font-names="Arial" 
        target="_blank"
        datasourceid="MenuSource"   
        runat="server">
        
        <staticmenuitemstyle backcolor="LightSteelBlue"
          forecolor="Black"/>
        <statichoverstyle backcolor="LightSkyBlue"/>
        <dynamicmenuitemstyle backcolor="Black"
          forecolor="Silver"/>
        <dynamichoverstyle backcolor="LightSkyBlue"
          forecolor="Black"/>

      </asp:menu>
      
      <asp:SiteMapDataSource id="MenuSource"
        runat="server"/>        

    </form>
  </body>
</html>

Di seguito sono riportati i dati della mappa del sito di esempio per l'esempio precedente.

<siteMap>

<siteMapNode url="~\Home.aspx"

title="Home"

description="Home">

<siteMapNode url="~\Music.aspx"

title="Music"

description="Music">

<siteMapNode url="~\Classical.aspx"

title="Classical"

description="Classical"/>

<siteMapNode url="~\Rock.aspx"

title="Rock"

description="Rock"/>

<siteMapNode url="~\Jazz.aspx"

title="Jazz"

description="Jazz"/>

</siteMapNode>

<siteMapNode url="~\Movies.aspx"

title="Movies"

description="Movies">

<siteMapNode url="~\Action.aspx"

title="Action"

description="Action"/>

<siteMapNode url="~\Drama.aspx"

title="Drama"

description="Drama"/>

<siteMapNode url="~\Musical.aspx"

title="Musical"

description="Musical"/>

</siteMapNode>

</siteMapNode>

</siteMap>

Commenti

Un Menu controllo è costituito da una gerarchia di voci di menu rappresentate dagli MenuItem oggetti. Ogni voce di menu ha una proprietà di sola Depth lettura che specifica il livello a cui viene visualizzata la voce di menu nel Menu controllo. Le voci di menu a livello superiore (livello 0) che non hanno una voce di menu padre sono chiamate voci di menu radice. Una voce di menu con una voce di menu padre è denominata voce di sottomenu. Tutte le voci di menu radice vengono archiviate nella Items raccolta. Gli elementi del sottomenu vengono archiviati nella raccolta della voce di ChildItems menu padre. È possibile accedere alla voce di menu padre di una voce di menu usando la Parent proprietà .

Nota

Le Items raccolte e ChildItems contengono solo le voci di menu per il livello successivo. Per accedere alle voci di menu ulteriormente verso il basso, usare la ChildItems proprietà di una voce di menu successiva.

Per creare le voci di menu per un Menu controllo, usare uno dei metodi seguenti:

Usare la sintassi dichiarativa per creare voci di menu statiche.

Usare un costruttore per creare dinamicamente nuove istanze della MenuItem classe. Questi MenuItem oggetti possono quindi essere aggiunti all'insieme Items o ChildItems .

Associare il controllo a un'origine Menu dati. Quando il Menu controllo è associato a un SiteMapDataSource controllo, MenuItem gli oggetti vengono creati automaticamente che corrispondono agli elementi nell'origine dati. Per altre origini dati, MenuItem gli oggetti vengono creati automaticamente che corrispondono alla struttura della gerarchia dell'origine dati. È tuttavia necessario usare la DataBindings raccolta per definire le associazioni delle voci di menu che specificano la relazione di associazione tra una voce di menu e la relativa voce di dati corrispondente.

Le voci di menu vengono visualizzate in un menu statico o in un menu dinamico, a seconda del relativo livello. Il menu statico viene sempre visualizzato in un Menu controllo. Per impostazione predefinita, le voci di menu a livello superiore (livello 0) vengono visualizzate nel menu statico. È possibile visualizzare livelli di menu aggiuntivi (sottomenus statici) nel menu statico impostando la StaticDisplayLevels proprietà. Le voci di menu (se presenti) con un livello superiore al valore specificato dalla StaticDisplayLevels proprietà vengono visualizzate in un sottomenu dinamico. Viene visualizzato un sottomenu dinamico solo quando l'utente posiziona il puntatore del mouse sulla voce di menu padre che contiene un sottomenu dinamico.

Quando l'utente fa clic su una voce di menu, il Menu controllo può passare a una pagina Web collegata o semplicemente pubblicarlo al server. Se la NavigateUrl proprietà di una voce di menu è impostata, il Menu controllo passa alla pagina collegata; in caso contrario, pubblica la pagina al server per l'elaborazione. Per impostazione predefinita, una pagina collegata viene visualizzata nella stessa finestra o cornice del Menu controllo. Per visualizzare il contenuto collegato in una finestra o un frame diverso, usare la Target proprietà del Menu controllo.

Nota

La Menu.Target proprietà influisce su ogni voce di menu del controllo. Per specificare una finestra o un frame per una singola voce di menu, impostare direttamente la Target proprietà dell'oggetto MenuItem .

Ogni voce di menu ha una TextValue proprietà e. Il valore della Text proprietà viene visualizzato nel Menu controllo, mentre la Value proprietà viene usata per archiviare eventuali dati aggiuntivi sulla voce di menu, ad esempio i dati passati all'evento postback associato alla voce di menu. Se si imposta la Text proprietà, ma lasciare non impostata la Value proprietà, la Value proprietà viene impostata automaticamente con lo stesso valore della Text proprietà. Questa considerazione si applica anche al contrario. Se si imposta la Value proprietà, ma non la Text proprietà, la Text proprietà viene impostata automaticamente con lo stesso valore della Value proprietà.

Nota

Le voci di menu allo stesso livello di menu devono avere un valore univoco per la Value proprietà. Il Menu controllo non può distinguere tra voci di menu diverse allo stesso livello con lo stesso valore. In questo scenario, se l'utente fa clic su una voce di menu con un valore duplicato, viene selezionata la voce di menu visualizzata prima nel menu.

Per visualizzare una descrizione comando quando l'utente posiziona il puntatore del mouse su una voce di menu, impostare la proprietà dell'elemento ToolTip .

Un Menu controllo include diversi tipi di voci di menu. È possibile controllare lo stile (ad esempio le dimensioni del carattere e il colore) per i diversi tipi di voci di menu usando le proprietà nella tabella seguente.

Proprietà stile voce di menu Descrizione
DynamicHoverStyle Impostazioni di stile per una voce di menu dinamica quando il puntatore del mouse viene posizionato su di esso.
DynamicMenuItemStyle Impostazioni di stile per una singola voce di menu dinamica.
DynamicMenuStyle Impostazioni di stile per un menu dinamico.
DynamicSelectedStyle Impostazioni di stile per la voce di menu dinamica attualmente selezionata.
StaticHoverStyle Impostazioni di stile per una voce di menu statica quando il puntatore del mouse viene posizionato su di esso.
StaticMenuItemStyle Impostazioni di stile per una singola voce di menu statica.
StaticMenuStyle Impostazioni di stile per un menu statico.
StaticSelectedStyle Impostazioni di stile per la voce di menu statica attualmente selezionata.

Anziché impostare le singole proprietà di stile, è possibile specificare gli stili applicati alle voci di menu in base al loro livello usando le raccolte di stili visualizzate nella tabella seguente.

Raccolte di stili di livello Descrizione
LevelMenuItemStyles Raccolta di MenuItemStyle oggetti che controllano lo stile delle voci di menu in base al loro livello.
LevelSelectedStyles Raccolta di oggetti che controllano lo stile delle voci di MenuItemStyle menu selezionate in base al livello.
LevelSubMenuStyles Raccolta di MenuItemStyle oggetti che controllano lo stile degli elementi del sottomenu in base al relativo livello.

Il primo stile della raccolta corrisponde allo stile delle voci di menu al primo livello di profondità nell'albero dei menu. Il secondo stile della raccolta corrisponde allo stile delle voci di menu al secondo livello di profondità nell'albero dei menu e così via. Questo è più spesso usato per generare menu di spostamento in stile contenuto in cui le voci di menu a una certa profondità devono avere lo stesso aspetto, indipendentemente dal fatto che abbiano sottomenus.

Nota

Se si usa una delle raccolte di stili di livello elencate nella tabella precedente per definire lo stile per il controllo, queste impostazioni di stile sostituiscono le singole proprietà dello stile della voce di Menu menu.

Oltre a personalizzare lo stile di una voce di menu, è anche possibile personalizzarne l'aspetto. È possibile specificare immagini personalizzate per le diverse parti per una voce di menu impostando le proprietà nella tabella seguente.

Image, proprietà Descrizione
ImageUrl Immagine facoltativa visualizzata accanto al testo di una voce di menu.
PopOutImageUrl Immagine facoltativa visualizzata in una voce di menu per indicare che la voce di menu ha un sottomenu dinamico.
SeparatorImageUrl Immagine facoltativa visualizzata nella parte inferiore di una voce di menu per separarla da altre voci di menu.

Per determinare se una voce di menu è attualmente selezionata in un Menu controllo, usare la Selected proprietà . È anche possibile determinare se una voce di menu è associata ai dati usando la DataBound proprietà . Se una voce di menu è associata ai dati, è possibile usare la DataItem proprietà per accedere ai valori della voce di dati associata alla voce di menu.

Per un elenco dei valori iniziali delle proprietà di un'istanza della classe MenuItem, vedere il costruttore MenuItem.

Costruttori

MenuItem()

Inizializza una nuova istanza della classe MenuItem senza testo o valore per il menu.

MenuItem(String)

Inizializza una nuova istanza della classe MenuItem utilizzando il testo di menu specificato.

MenuItem(String, String)

Inizializza una nuova istanza della classe MenuItem utilizzando il testo e il valore di menu specificati.

MenuItem(String, String, String)

Inizializza una nuova istanza della classe MenuItem utilizzando il testo e il valore di menu e l'URL di un'immagine specificati.

MenuItem(String, String, String, String)

Inizializza una nuova istanza della classe MenuItem utilizzando il testo e il valore di menu, l'URL di un'immagine e l'URL di navigazione specificati.

MenuItem(String, String, String, String, String)

Inizializza una nuova istanza della classe MenuItem utilizzando il testo e il valore di menu, l'URL di un'immagine, l'URL di navigazione e la destinazione specificati.

Proprietà

ChildItems

Ottiene un oggetto MenuItemCollection contenente le voci di sottomenu della voce di menu corrente.

DataBound

Ottiene un valore che indica se la voce di menu è stata creata tramite associazione dati.

DataItem

Ottiene l'elemento di dati associato alla voce di menu.

DataPath

Ottiene il percorso dei dati associati alla voce di menu.

Depth

Ottiene il livello a cui viene visualizzata una voce di menu.

Enabled

Ottiene o imposta un valore che indica se l'oggetto MenuItem è abilitato, consentendo all'elemento di visualizzare un'immagine popout e le eventuali voci di menu figlio.

ImageUrl

Ottiene o imposta l'URL di un'immagine visualizzata accanto al testo di una voce di menu.

NavigateUrl

Ottiene o imposta l'URL a cui passare quando viene selezionata la voce di menu.

Parent

Ottiene la voce di menu padre della voce di menu corrente.

PopOutImageUrl

Ottiene o imposta l'URL di un'immagine visualizzata in una voce di menu per indicare che la voce di menu dispone di un sottomenu dinamico.

Selectable

Ottiene o imposta un valore che indica se l'oggetto MenuItem può essere selezionato, ovvero se è possibile fare clic su di esso.

Selected

Ottiene o imposta un valore che indica se la voce di menu corrente è selezionata in un controllo Menu.

SeparatorImageUrl

Ottiene o imposta l'URL di un'immagine visualizzata nella parte inferiore di una voce di menu per separarla da altre voci di menu.

Target

Ottiene o imposta la finestra o il frame di destinazione in cui visualizzare il contenuto della pagina Web associato a una voce di menu.

Text

Ottiene o imposta il testo visualizzato per la voce di menu in un controllo Menu.

ToolTip

Ottiene o imposta il testo della descrizione comando della voce di menu.

Value

Ottiene o imposta un valore non visualizzato utilizzato per archiviare dati aggiuntivi relativi alla voce di menu, ad esempio i dati utilizzati per la gestione degli eventi di postback.

ValuePath

Ottiene il percorso dalla voce di menu radice alla voce di menu corrente.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Crea una copia dell'oggetto MenuItem corrente.

IStateManager.IsTrackingViewState

Ottiene un valore che indica se l'oggetto MenuItem salva le modifiche apportate al relativo stato di visualizzazione.

IStateManager.LoadViewState(Object)

Carica lo stato di visualizzazione precedentemente salvato della voce di menu.

IStateManager.SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione in un oggetto Object.

IStateManager.TrackViewState()

Indica all'oggetto MenuItem di tenere traccia delle modifiche apportate allo stato di visualizzazione.

Si applica a

Vedi anche