Partilhar via


MenuItem Classe

Definição

Representa um item de menu exibido no controle Menu. Essa 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 a seguir demonstra como popular um Menu controle 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 a seguir demonstra como associar um Menu controle a um SiteMapDataSource controle. Quando associado a uma fonte de dados, o Menu controle cria automaticamente os MenuItem objetos. Para que este exemplo funcione corretamente, você deve copiar os dados do mapa do site de exemplo abaixo para um arquivo 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>

Veja a seguir dados de mapa de site de exemplo 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>

Comentários

Um Menu controle é composto por uma hierarquia de itens de menu representados por MenuItem objetos. Cada item de menu tem uma propriedade somente Depth leitura que especifica o nível no qual o item de menu é exibido no Menu controle. Os itens de menu no nível superior (nível 0) que não têm um item de menu pai são chamados de itens de menu raiz. Um item de menu que tem um item de menu pai é chamado de item de submenu. Todos os itens de menu raiz são armazenados na Items coleção. Os itens de submenu são armazenados na coleção de um item de ChildItems menu pai. Você pode acessar o item de menu pai de um item de menu usando a Parent propriedade.

Observação

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

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

Use a sintaxe declarativa para criar itens de menu estáticos.

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

Associe o Menu controle a uma fonte de dados. Quando o Menu controle é associado a um SiteMapDataSource controle, MenuItem os objetos são criados automaticamente que correspondem aos itens na fonte de dados. Para outras fontes de dados, MenuItem os objetos também são criados automaticamente que correspondem à estrutura de hierarquia da fonte de dados; no entanto, você também deve usar a DataBindings coleção para definir as associações de item de menu que especificam a relação de associação entre um item de menu e seu item de dados correspondente.

Os itens de menu são exibidos em um menu estático ou em um menu dinâmico, dependendo de seu nível. O menu estático sempre é exibido em um Menu controle. Por padrão, os itens de menu no nível superior (nível 0) são exibidos no menu estático. Você pode exibir níveis de menu adicionais (submenus estáticos) no menu estático definindo a StaticDisplayLevels propriedade. Os itens de menu (se houver) com um nível mais alto do que o valor especificado pela StaticDisplayLevels propriedade são exibidos em um submenu dinâmico. Um submenu dinâmico aparece somente quando o usuário posiciona o ponteiro do mouse sobre o item de menu pai que contém um submenu dinâmico.

Quando o usuário clica em um item de menu, o Menu controle pode navegar até uma página da Web vinculada ou simplesmente postar de volta no servidor. Se a NavigateUrl propriedade de um item de menu estiver definida, o Menu controle navegará até a página vinculada; caso contrário, ele postará a página de volta no servidor para processamento. Por padrão, uma página vinculada é exibida na mesma janela ou quadro que o Menu controle. Para exibir o conteúdo vinculado em uma janela ou quadro diferente, use a Target propriedade do Menu controle.

Observação

A Menu.Target propriedade afeta cada item de menu no controle. Para especificar uma janela ou quadro para um item de menu individual, defina a Target propriedade do MenuItem objeto diretamente.

Cada item de menu tem um Text e uma Value propriedade. O valor da Text propriedade é exibido no Menu controle, enquanto a Value propriedade é usada para armazenar quaisquer dados adicionais sobre o item de menu, como dados passados para o evento de postback associado ao item de menu. Se você definir a Text propriedade, mas deixar a Value propriedade não definida, a Value propriedade será definida automaticamente com o mesmo valor que a Text propriedade. O oposto também é verdadeiro. Se você definir a Value propriedade, mas não a Text propriedade, a Text propriedade será definida automaticamente com o mesmo valor que a Value propriedade.

Observação

Os itens de menu no mesmo nível de menu devem ter um valor exclusivo para a Value propriedade; o Menu controle não pode distinguir entre itens de menu diferentes no mesmo nível que tenham o mesmo valor. Nesse cenário, se o usuário clicar em um item de menu com um valor duplicado, o item de menu que aparece primeiro no menu será selecionado.

Para exibir uma Dica de Ferramenta quando o usuário posicionar o ponteiro do mouse sobre um item de menu, defina a propriedade do ToolTip item.

Um Menu controle tem vários tipos diferentes de itens de menu. Você pode controlar o estilo (como tamanho da fonte e cor) para os diferentes tipos de item de menu usando as propriedades na tabela a seguir.

Propriedade de estilo de item de menu Descrição
DynamicHoverStyle As configurações de estilo de um item de menu dinâmico quando o ponteiro do mouse é posicionado sobre ele.
DynamicMenuItemStyle As configurações de estilo de um item de menu dinâmico individual.
DynamicMenuStyle As configurações de estilo para um menu dinâmico.
DynamicSelectedStyle As configurações de estilo para o item de menu dinâmico selecionado no momento.
StaticHoverStyle As configurações de estilo de um item de menu estático quando o ponteiro do mouse é posicionado sobre ele.
StaticMenuItemStyle As configurações de estilo de um item de menu estático individual.
StaticMenuStyle As configurações de estilo para um menu estático.
StaticSelectedStyle As configurações de estilo para o item de menu estático selecionado no momento.

Em vez de definir as propriedades de estilo individuais, você pode especificar estilos que são aplicados a itens de menu com base em seu nível usando as coleções de estilo mostradas na tabela a seguir.

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

O primeiro estilo da coleção corresponde ao estilo dos itens de menu no primeiro nível de profundidade na árvore de menus. O segundo estilo da coleção corresponde ao estilo dos itens de menu no segundo nível de profundidade na árvore de menus e assim por diante. Isso geralmente é usado para gerar menus de navegação no estilo de conteúdo em que os itens de menu em uma determinada profundidade devem ter a mesma aparência, independentemente de terem submenus.

Observação

Se você usar qualquer uma das coleções de estilo de nível listadas na tabela anterior para definir o estilo do Menu controle, essas configurações de estilo substituirão as propriedades de estilo de item de menu individuais.

Além de personalizar o estilo de um item de menu, você também pode personalizar sua aparência. Você pode especificar imagens personalizadas para as diferentes partes de um item de menu definindo as propriedades na tabela a seguir.

Propriedade Image Descrição
ImageUrl Uma imagem opcional exibida ao lado do texto de um item de menu.
PopOutImageUrl Uma imagem opcional exibida em um item de menu para indicar que o item de menu tem um submenu dinâmico.
SeparatorImageUrl Uma imagem opcional exibida na parte inferior de um item de menu para separá-la de outros itens de menu.

Para determinar se um item de menu está selecionado no momento em um Menu controle, use a Selected propriedade. Você também pode determinar se um item de menu está associado aos dados usando a DataBound propriedade. Se um item de menu estiver associado aos dados, você poderá usar a DataItem propriedade para acessar os valores do item de dados associado ao item de menu.

Para obter uma lista de valores de propriedade iniciais para uma instância da MenuItem classe, consulte o MenuItem construtor.

Construtores

MenuItem()

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

MenuItem(String)

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

MenuItem(String, String)

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

MenuItem(String, String, String)

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

MenuItem(String, String, String, String)

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

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

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

Propriedades

ChildItems

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

DataBound

Obtém um valor que indica se o item de menu foi criado por meio de associação de dados.

DataItem

Obtém o item de dados associado ao item de menu.

DataPath

Obtém o caminho para os dados associados ao item de menu.

Depth

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

Enabled

Obtém ou define um valor que indica se o objeto MenuItem está habilitado, permitindo que o item exiba uma imagem pop-out e itens do menu filho.

ImageUrl

Obtém ou define a URL para uma imagem exibida ao lado do texto no item de menu.

NavigateUrl

Obtém ou define a URL de navegação ao clicar no item de menu.

Parent

Obtém o item de menu pai do item de menu atual.

PopOutImageUrl

Obtém ou define a URL para uma imagem exibida em um item de menu para indicar que o item de menu tem um submenu dinâmico.

Selectable

Obtém ou define um valor que indica se o objeto MenuItem pode ser selecionado ou se é “clicável”.

Selected

Obtém ou define um valor que indica se o item de menu atual está selecionado em um controle Menu.

SeparatorImageUrl

Obtém ou define a URL para uma imagem exibida na parte inferior de um item de menu para separá-la de outros itens de menu.

Target

Obtém ou define a janela ou o quadro de destino no qual deverá ser exibido o conteúdo da página da Web associado a um item de menu.

Text

Obtém ou define o texto exibido para o item de menu em um controle Menu.

ToolTip

Obtém ou define o texto de dica de ferramenta do item de menu.

Value

Obtém ou define um valor não exibido usado para armazenar quaisquer dados adicionais sobre o item de menu, como dados usados para manipular eventos de postback.

ValuePath

Obtém o caminho do item de menu raiz do item de menu atual.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

ICloneable.Clone()

Cria uma cópia do objeto MenuItem atual.

IStateManager.IsTrackingViewState

Obtém um valor que indica se o objeto MenuItem está salvando as alterações no estado de exibição.

IStateManager.LoadViewState(Object)

Carrega o estado de exibição salvo anteriormente do item de menu.

IStateManager.SaveViewState()

Salva as alterações ao estado de exibição em um Object.

IStateManager.TrackViewState()

Instrui o objeto MenuItem a acompanhar as alterações em seu estado de exibição.

Aplica-se a

Confira também