Не могу заполнить RibbonMenu - PullRequest
1 голос
/ 04 июля 2011

Мне нужно заполнить элемент управления RibbonMenu во время выполнения некоторыми данными из базы данных.

Я беру свое смещение в: http://msdn.microsoft.com/en-us/library/microsoft.office.tools.ribbon.ribbonmenu(v=vs.90).aspx

с кодом:

private void PopulateCustomerMenu()
{
    // Add two sub-menus to EmployeeMenu and populate each sub-menu
    // First sub-menu
    RibbonMenu subMenu1 = new RibbonMenu(); //new RibbonMenu(); is underlined red
    subMenu1.Dynamic = true;
    subMenu1.Label = "A - M";
    subMenu1.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu1.Items.Last()).Label = "Hall, Don";
    subMenu1.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu1.Items.Last()).Label = "Valdez, Rachel";
    CustomerMenu.Items.Add(subMenu1);

    // Second sub-menu
    RibbonMenu subMenu2 = new RibbonMenu(); //new RibbonMenu(); is as well
    subMenu2.Dynamic = true;
    subMenu2.Label = "N - Z";
    subMenu2.Items.Add(new RibbonToggleButton()); //new RibbonToggleButton() is as well
    ((RibbonToggleButton)subMenu2.Items.Last()).Label = "Robinson, Alex";
    CustomerMenu.Items.Add(subMenu2);
}

Единственное, что я получаю - это Visual Studio, говорящая « Ошибка 1 Не удается создать экземпляр абстрактного класса или интерфейса» Microsoft.Office.Tools.Ribbon.RibbonMenu 'C: \ Users \ Christoffer \ Documents \ Visual Studio 2010 \ Projects \ OutlookAddIn2 \ OutlookAddIn2 \ Ribbon1.cs 80 35 OutlookAddIn2"

Я застрял в последние 15 часов, поэтому я открыт для всего ... Есть идеи?

1 Ответ

1 голос
/ 04 июля 2011

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

Пространство имен: Microsoft.Office.Tools.Ribbon

Сборка: Microsoft.Office.Tools.Common (в Microsoft.Office.Tools.Common.dll)

На странице, на которую вы ссылаетесь, есть:

Пространство имен: Microsoft.Office.Tools.Ribbon

Сборка: Microsoft.Office.Tools.Common.v9.0(в Microsoft.Office.Tools.Common.v9.0.dll)

Ссылка, на которую вы ссылались, относится к выпуску Visual Studio 2007 (отсюда v = vs90 в ссылке. Если выпытаясь использовать эту версию, убедитесь, что ваш проект ссылается на соответствующую dll (Microsoft.Office.Tools.Common.v9.0.dll), а не на новую dll (Microsoft.Office.Tools.Common.dll)

Если вы хотите использовать новую dll, то для создания меню или пунктов меню вы должны получить экземпляр RibbonFactory basна том, где вы строите ленту.Например, если вы пытаетесь добавить меню ленты в Word, вы бы позвонили Globals.Factory.GetRibbonFactory(), а затем использовали фабрику, возвращенную этим вызовом, для создания ленты.

...