MenuItem Classe

Definição

Representa um item de menu exibido no Menu controlo. Esta classe não pode ser herdada.

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
Herança
MenuItem
Implementações

Exemplos

O exemplo seguinte demonstra como preencher um Menu controlo com objetos estáticos MenuItem usando sintaxe declarativa.


<%@ 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>

O exemplo seguinte demonstra como associar um Menu controlo a um controlo SiteMapDataSource . Quando associado a uma fonte de dados, o controlo Menu cria automaticamente os MenuItem objetos. Para que este exemplo funcione corretamente, deve copiar os dados do mapa de sites abaixo para um ficheiro chamado 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>

Segue-se um exemplo de dados de mapa de sítios para o exemplo anterior.

<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>

Observações

Um Menu controlo é composto por uma hierarquia de itens de menu representados por MenuItem objetos. Cada item do menu tem uma propriedade de apenas Depth leitura que especifica o nível em que o item do menu é exibido no Menu controlo. Itens do menu no nível superior (nível 0) que não têm um item de menu principal são chamados itens do menu raiz. Um item de menu que tem um item de menu pai chama-se item de submenu. Todos os itens do menu raiz estão armazenados na Items coleção. Os itens do submenu são armazenados na coleção de ChildItems itens do menu pai. Pode aceder ao elemento principal de um item do menu usando a Parent propriedade.

Note

As Items coleções e ChildItems contêm apenas os itens do menu para o nível seguinte. Para aceder a itens do menu mais abaixo na árvore de menus, use a ChildItems propriedade de um item de menu subsequente.

Para criar os itens do menu de um Menu controlo, use um dos seguintes métodos:

Use sintaxe declarativa para criar itens estáticos no menu.

Use um construtor para criar dinamicamente novas instâncias da MenuItem classe. Estes MenuItem objetos podem então ser adicionados à Items coleção ou.ChildItems

Vincule o Menu controlo a uma fonte de dados. Quando o controlo Menu está ligado a um SiteMapDataSource controlo, MenuItem são automaticamente criados objetos que correspondem aos itens na fonte de dados. Para outras fontes de dados, MenuItem são também criados automaticamente objetos que correspondem à estrutura hierárquica da fonte de dados; no entanto, deve também usar a DataBindings coleção para definir as ligações de itens de menu que especificam a relação de ligação entre um item de menu e o seu correspondente elemento de dados.

Os itens do menu são apresentados num menu estático ou dinâmico, dependendo do nível. O menu estático é sempre exibido num Menu controlo. Por defeito, os itens do menu no nível superior (nível 0) são exibidos no menu estático. Pode mostrar níveis adicionais de menu (submenus estáticos) dentro do menu estático definindo a StaticDisplayLevels propriedade. Os itens do menu (se existirem) com um nível superior ao especificado pela StaticDisplayLevels propriedade são exibidos num submenu dinâmico. Um submenu dinâmico aparece apenas quando o utilizador posiciona o ponteiro do rato sobre o item do menu pai que contém um submenu dinâmico.

Quando o utilizador clica num item do menu, o controlo Menu pode navegar até uma página Web ligada ou simplesmente publicar de volta para o servidor. Se a NavigateUrl propriedade de um item do menu estiver definida, o Menu controlo navega até à página ligada; caso contrário, publica a página de volta ao servidor para processamento. Por defeito, uma página ligada é exibida na mesma janela ou frame do Menu controlo. Para mostrar o conteúdo ligado numa janela ou frame diferente, use a Target propriedade do Menu controlo.

Note

A Menu.Target propriedade afeta todos os itens do menu no controlo. Para especificar uma janela ou moldura para um item individual do menu, defina diretamente a Target propriedade do MenuItem objeto.

Cada item do menu tem uma Text propriedade e uma Value propriedade. O valor da Text propriedade é exibido no Menu controlo, enquanto a Value propriedade é usada para armazenar quaisquer dados adicionais sobre o item do menu, como dados passados para o evento de postback associado ao item do menu. Se definires a Text propriedade, mas a Value deixares sem definir, a Value propriedade é automaticamente definida com o mesmo valor que a Text propriedade. O contrário também é verdade. Se definir a Value propriedade, mas não a Text propriedade, esta Text é automaticamente definida com o mesmo valor que a Value propriedade.

Note

Itens do menu ao mesmo nível de menu devem ter cada um um valor único para a Value propriedade; o Menu controlo não consegue distinguir entre diferentes itens do menu ao mesmo nível que tenham o mesmo valor. Neste cenário, se o utilizador clicar num item do menu que tenha um valor duplicado, o item do menu que aparece primeiro no menu é selecionado.

Para mostrar uma dica de ferramenta quando o utilizador posiciona o ponteiro do rato sobre um item do menu, defina a propriedade do ToolTip item.

Um Menu controlo tem vários tipos diferentes de itens no menu. Pode controlar o estilo (como tamanho e cor da fonte) para os diferentes tipos de itens do menu usando as propriedades na tabela seguinte.

Propriedade do estilo dos itens do menu Description
DynamicHoverStyle As definições de estilo para um item dinâmico do menu quando o ponteiro do rato está posicionado por cima.
DynamicMenuItemStyle As definições de estilo para um item dinâmico individual do menu.
DynamicMenuStyle As definições de estilo para um menu dinâmico.
DynamicSelectedStyle As definições de estilo para o item do menu dinâmico atualmente selecionado.
StaticHoverStyle As definições de estilo para um item de menu estático quando o ponteiro do rato está posicionado por cima.
StaticMenuItemStyle As definições de estilo para um item estático individual do menu.
StaticMenuStyle As definições de estilo para um menu estático.
StaticSelectedStyle As definições de estilo para o item de menu estático atualmente selecionado.

Em vez de definir as propriedades de estilo individuais, pode especificar estilos aplicados aos itens do menu com base no seu nível, utilizando as coleções de estilos apresentadas na tabela seguinte.

Coleções em estilo Level Description
LevelMenuItemStyles Uma coleção de MenuItemStyle objetos que controlam o estilo dos itens do menu com base no seu nível.
LevelSelectedStyles Uma coleção de MenuItemStyle objetos que controlam o estilo dos itens selecionados do menu com base no seu nível.
LevelSubMenuStyles Uma coleção de MenuItemStyle objetos que controlam o estilo dos itens do submenu com base no seu nível.

O primeiro estilo da coleção corresponde ao estilo dos itens do menu no primeiro nível de profundidade na árvore do menu. O segundo estilo da coleção corresponde ao estilo dos itens do menu no segundo nível de profundidade na árvore do menu, e assim sucessivamente. Isto é mais frequentemente usado para gerar menus de navegação ao estilo de índice, onde os itens do menu a certa profundidade devem ter a mesma aparência, independentemente de terem submenus ou não.

Note

Se usar qualquer uma das coleções de estilos de níveis listadas na tabela anterior para definir o estilo do Menu controlo, estas definições de estilo sobrepõem-se às propriedades individuais do estilo dos itens do menu.

Para além de personalizar o estilo de um item do menu, também pode personalizar a sua aparência. Pode especificar imagens personalizadas para as diferentes partes de um item do menu definindo as propriedades na tabela seguinte.

Propriedade da imagem Description
ImageUrl Uma imagem opcional exibida ao lado do texto de um item do menu.
PopOutImageUrl Uma imagem opcional exibida num item do menu para indicar que o item do menu tem um submenu dinâmico.
SeparatorImageUrl Uma imagem opcional exibida na parte inferior de um item do menu para o distinguir dos outros itens do menu.

Para determinar se um item do menu está atualmente selecionado num Menu controlo, use a Selected propriedade. Também pode determinar se um item do menu está vinculado a dados usando a DataBound propriedade. Se um item do menu estiver associado a dados, pode usar essa DataItem propriedade para aceder aos valores do elemento de dados associado ao item do menu.

Para uma lista de valores iniciais de propriedades para uma instância da MenuItem classe, veja o MenuItem construtor.

Construtores

Name Description
MenuItem()

Inicializa uma nova instância da MenuItem classe sem texto do menu ou valor.

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

Inicializa uma nova instância da MenuItem classe usando o texto do menu, valor, URL da imagem, URL de navegação e destino especificados.

MenuItem(String, String, String, String)

Inicializa uma nova instância da MenuItem classe usando o texto do menu, valor, URL da imagem e URL de navegação especificados.

MenuItem(String, String, String)

Inicializa uma nova instância da MenuItem classe usando o texto do menu, valor e URL especificados para uma imagem.

MenuItem(String, String)

Inicializa uma nova instância da MenuItem classe usando o texto e valor especificados no menu.

MenuItem(String)

Inicializa uma nova instância da MenuItem classe usando o texto especificado do menu.

Propriedades

Name Description
ChildItems

Recebe um MenuItemCollection objeto que contém os itens do submenu do item atual do menu.

DataBound

Recebe um valor que indica se o item do menu foi criado através de data binding.

DataItem

Obtém o item de dados que está associado ao item do menu.

DataPath

Obtém o caminho para os dados que estão ligados ao item do menu.

Depth

Obtém o nível em que um item do menu é exibido.

Enabled

Recebe ou define um valor que indica se o MenuItem objeto está ativado, permitindo que o item apresente uma imagem pop-out e quaisquer itens filhos do menu.

ImageUrl

Recebe ou define o URL para uma imagem que é exibida ao lado do texto num item do menu.

NavigateUrl

Obtém ou define o URL para navegar quando o item do menu é clicado.

Parent

Recebe o item do menu principal do item atual.

PopOutImageUrl

Recebe ou define a URL para uma imagem que é exibida num item do menu para indicar que o item do menu tem um submenu dinâmico.

Selectable

Recebe ou define um valor que indica se o MenuItem objeto pode ser selecionado ou se é "clicável".

Selected

Recebe ou define um valor que indica se o item atual do menu está selecionado num Menu controlo.

SeparatorImageUrl

Recebe ou define a URL para uma imagem exibida na parte inferior de um item do menu para a separar dos outros itens do menu.

Target

Obtém ou define a janela ou frame-alvo onde mostrar o conteúdo da página Web associado a um item do menu.

Text

Recebe ou define o texto exibido para o item do menu num Menu controlo.

ToolTip

Recebe ou define o texto da dica de ferramenta para o item do menu.

Value

Recebe ou define um valor não exibido usado para armazenar quaisquer dados adicionais sobre o item do menu, como dados usados para gerir eventos de postback.

ValuePath

Obtém o caminho do item raiz do menu até ao item atual do menu.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
ICloneable.Clone()

Cria uma cópia do objeto atual MenuItem .

IStateManager.IsTrackingViewState

Recebe um valor que indica se o MenuItem objeto está a guardar alterações ao seu estado de visualização.

IStateManager.LoadViewState(Object)

Carrega o estado de visualização guardado anteriormente do item do menu.

IStateManager.SaveViewState()

Guarda as alterações de estado de vista para um Object.

IStateManager.TrackViewState()

Instrui o MenuItem objeto a acompanhar alterações ao seu estado de visualização.

Aplica-se a

Ver também