2014-02-05 4 views
0

Вот как мои данные хранятся в базе данных.devexpress Ribbon Control - как создать меню и подменю, если существуют дочерние элементы

ID ParentId меню файла

1 0 Меню1

2 1 Подменю 1.1

3 0 menu2

4 3 Суб Menu2.1

5 3 Суб menu2. 2

6 5 Мой файл D: \ A.txt

7 0 Меню 3

8 7 Мой файл (menu3) D: \ b.txt

Я хочу показать меню/подменю/имя файла на контроле ленты. Если кто-то сделал что-то подобное, предложите, как это можно сделать. Я создал ленточную форму, затем Ribbon Control, добавленный элемент кнопки бара. Теперь я хочу показать меню с навигационной стрелкой e.g.menu1, menu2, menu3 с навигационной стрелкой, которая при наведении отображает подменю и подменю, снова показывающую стрелку, если в ней есть дочерний элемент.

Платформа: VS2012, окна приложения, C#

ответ

0
private void AddMenu(string menuName, int id, int parentId, string fileName) 
    { 
     BarSubItem subitem = CreateSubItem(menuName, id, fileName); 

     if (parentId != 0) 
     { 
      BarSubItem parentItem = ribbon.Items.FindById(parentId) as BarSubItem; 
      parentItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(subitem)); 
     } 
     else 
     {     
      menuBarSubItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(subitem)); 
     } 
    } 

    private BarSubItem CreateSubItem(string menuName, int id, string fileName) 
    { 
     BarSubItem subitem = new BarSubItem(ribbon.Manager, menuName); 
     subitem.Id = id; 
     if (!string.IsNullOrEmpty(fileName)) 
      subitem.Glyph = System.Drawing.Image.FromFile("file.png"); 
     return subitem; 
    } 

    private void AddMenuItem(string menuName, int id, int parentId, string fileName) 
    { 
     BarButtonItem buttonItem = new BarButtonItem(ribbon.Manager, menuName); 
     buttonItem.Id = id; 
     buttonItem.Tag = fileName; 
     buttonItem.ItemClick += buttonItem_ItemClick; 

     if (!string.IsNullOrEmpty(fileName)) 
      buttonItem.Glyph = System.Drawing.Image.FromFile("file.png"); 
     if (parentId != 0) 
     { 
      BarSubItem parentItem = ribbon.Items.FindById(parentId) as BarSubItem; 
      parentItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(buttonItem)); 
     } 
     else 
     { 
      menuBarSubItem.LinksPersistInfo.Add(new DevExpress.XtraBars.LinkPersistInfo(buttonItem));     
     } 
    } 
0

Посмотрите на The List of Bar Items and Links справки-статьи.
В соответствии с этим документом вы должны использовать пункт меню (BarSubItem) вместо элемента Button (BarButtonItem) для представления подменю на ленте.