Общие сведения об элементе управления Menu

Visual Studio 2010

Обновлен: Ноябрь 2007

Элемент управления Menu позволяет разрабатывать для веб-страниц ASP.NET меню, отображаемые как статически, так и динамически.

В данном разделе рассматриваются следующие темы:

Элемент управления Menu имеет два режима отображения: статический и динамический. Статическое отображение означает, что элемент управления Menu все время полностью развернут. Отображается вся структура меню, и пользователь может щелкнуть любую часть меню. В динамически отображаемом меню являются статичными только указанные части, тогда как их дочерние пункты меню отображаются, когда пользователь удерживает указатель мыши на родительском пункте.

Можно настроить содержимое элемента управления Menu либо непосредственно в элементе управления, либо путем привязки элемента управления к источнику данных. Без написания какого-либо кода можно управлять внешним видом, ориентацией и содержимым элемента управления Menu ASP.NET. Помимо визуальных свойств, предоставляемых элементом управления, он также поддерживает обложки элементов управления ASP.NET и темы. Дополнительные сведения об обложках и темах см. в разделе Общие сведения о темах и обложках ASP.NET.

Режим статического отображения

Поведением статического отображения можно управлять с помощью свойства StaticDisplayLevels элемента управления Menu. Свойство StaticDisplayLevels определяет количество уровней статического отображения от корневого элемента меню. Например, если свойство StaticDisplayLevels имеет значение 3, статически отображаться в меню будут первые три уровня. Минимальный уровень статического отображения равен 1, и элемент управления создает исключение, если этому свойству присваивается нулевое или отрицательное значение.

Режим динамического отображения

Свойство MaximumDynamicDisplayLevels определяет, сколько уровней динамически появляющихся пунктов меню должно отображаться после уровня статического отображения. Например, если меню имеет статический уровень 3 и динамический уровень 2, первые три уровня меню будут отображаться статически, а следующие два уровня будут динамическими.

Если свойству MaximumDynamicDisplayLevels присвоено значение 0, ни один пункт меню не отобразится динамически. Если свойству MaximumDynamicDisplayLevels присвоено отрицательное число, возникнет исключение.

Определение содержимого меню

Содержимое элемента управления Menu можно определить двумя способами: путем добавления отдельных объектов MenuItem (декларативно или программно) и с помощью привязки элемента управления к источнику данных XML.

Добавление пунктов меню вручную

Добавление отдельных пунктов меню к элементу управления выполняется с помощью свойства Items. Свойство Items является коллекцией объектов MenuItem. В следующем примере показана декларативная разметка для элемента управления Menu с тремя командами меню, каждая из которых имеет два дочерних элемента:

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="3">
  <Items>
    <asp:MenuItem Text="File" Value="File">
      <asp:MenuItem Text="New" Value="New"></asp:MenuItem>
      <asp:MenuItem Text="Open" Value="Open"></asp:MenuItem>
    </asp:MenuItem>
    <asp:MenuItem Text="Edit" Value="Edit">
      <asp:MenuItem Text="Copy" Value="Copy"></asp:MenuItem>
      <asp:MenuItem Text="Paste" Value="Paste"></asp:MenuItem>
    </asp:MenuItem>
    <asp:MenuItem Text="View" Value="View">
      <asp:MenuItem Text="Normal" Value="Normal"></asp:MenuItem>
      <asp:MenuItem Text="Preview" Value="Preview"></asp:MenuItem>
    </asp:MenuItem>
  </Items>
</asp:Menu>

Привязка к источнику данных XML

Привязка к XML-файлу позволяет управлять содержимым меню путем редактирования файла, а не с помощью конструктора. Благодаря этому можно обновлять навигационную структуру веб-узла без необходимости изменять элемент управления Menu или редактировать какой-либо код. Если веб-узел имеет изменяющееся содержимое, XML-файл можно использовать для организации этого содержимого: передав XML-файл элементу управления Menu, можно проверить доступность содержимого пользователям веб-узла.

Внешний вид и поведение

Поведением элемента управления Menu можно управлять через его свойства. Также можно управлять поведением в режиме динамического отображения, в том числе интервалом времени, в течение которого пункт меню остается видимым после его отображения. Например, чтобы изменить ориентацию элемента управления Menu с горизонтальной на вертикальную, следует установить свойство Orientation:

[Visual Basic]

Menu.Orientation = Orientation.Vertical

[C#]

Menu.Orientation = Orientation.Vertical;

Установка свойства в Orientation.Horizontal приведет к изменению ориентации обратно на горизонтальную.

Можно установить отдельные свойства элемента управления Menu для указания размера, цвета, шрифта и других характеристик его внешнего вида. Помимо этого, к элементу управления Menu можно применять обложки и темы.

Стиль

Каждый уровень меню поддерживает свойства стилей. Если не заданы свойства динамического стиля, используются свойства статического стиля. Если свойства динамического стиля установлены, а свойства статического стиля не установлены, то для отрисовки статического стиля используются значения свойств по умолчанию. Иерархия стилей элемента управления Menu выглядит следующим образом:

  1. Элемент управления

  2. SubMenuStyles

  3. MenuItemStyles

  4. SelectedItemStyles

  5. HoverMenuItemStyles

Эти стили объединяются между динамическими и статическими меню с помощью следующей логики:

  • Каждый отдельный стиль применяется к соответствующему типу действия или пункта меню.

  • Все стили объединяются в предшествующем им в иерархии стиле с переопределением последнего стиля.

    ecs0x9w5.alert_note(ru-ru,VS.100).gifПримечание.

    Статические меню никогда не объединяются, а динамический стиль применяется, если статический стиль не определен.

Скрытие динамического меню

Один из аспектов динамического меню — интервал времени, после которого динамически отображаемая часть меню исчезает. Это значение задается в миллисекундах с помощью свойства DisappearAfter:

[Visual Basic]

Menu.DisappearAfter = 1000

[C#]

Menu.DisappearAfter = 1000;

По умолчанию используется значение 500 миллисекунд. Если значение свойства DisappearAfter равно 0, то перемещение курсора мыши за область элемента управления Menu приведет к его мгновенному исчезновению. Значение -1 указывает, что выход курсора мыши из области меню не должен влиять на его видимость, и только щелчок вне элемента управления Menu приведет к исчезновению динамической части меню.

Использование элемента управления Menu с элементами управления UpdatePanel

Элементы управления UpdatePanel используются для обновления выбранных областей страницы вместо обновления всей страницы с помощью обратной передачи. Элемент управления Menu можно использовать внутри элемента управления UpdatePanel, но с ограничением: стили должны применяться посредством ссылки на класс таблицы каскадных стилей (CSS). Например, вместо того, чтобы установить атрибут свойства DynamicHoverStyle в форме "свойство.подчиненное_свойство", задавайте стиль с помощью атрибута в форме "CssClass=имя_класса". Аналогично, при использовании шаблона DynamicHoverStyle для задания стиля используйте атрибут CssClass шаблона.

Дополнительные сведения о работе с элементами управления UpdatePanel см. в разделах Общие сведения об элементе управления UpdatePanel и Общие сведения о частичной отрисовке страниц.

В следующей таблице перечислены классы, связанные с элементом управления Menu.

Член

Описание

Menu

Основной класс элемента управления.

MenuEventArgs

Предоставляет данные для событий MenuItemClick и MenuItemDataBound элемента управления Menu.

MenuEventHandler

Представляет обработчики событий MenuItemClick и MenuItemDataBound элемента управления Menu.

MenuItem

Представляет пункт меню, отображаемый в элементе управления Menu.

MenuItemBinding

Определяет связь между элементом данных и пунктом меню, к которому он привязан, в элементе управления Menu.

MenuItemBindingCollection

Представляет коллекцию объектов MenuItemBinding.

MenuItemCollection

Представляет коллекцию элементов меню в элементе управления Menu.

MenuItemStyle

Представляет стиль пункта меню в элементе управления Menu.

MenuItemStyleCollection

Представляет коллекцию объектов MenuItemStyle в элементе управления Menu.

К началу

Показ: