Экземпляры ленты на документ

Я использую VSTO 3.0, и дизайнер ленты дает мне ленту, которая, по-видимому, является общей для всех документов.

Итак, если у меня есть конкретное состояние документа (скажем, количество размеченных тегов XML), которое должно отображаться на ленте (или кнопка переключения), то все документы, похоже, совместно используют экземпляр ленты

Как я могу исправить эту ТИА


person Rahul    schedule 17.11.2008    source источник


Ответы (2)


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

Затем, когда происходит обратный вызов состояния обновления для этой кнопки, вы можете обновить заголовок/изображение/включено по мере необходимости.

person Bevan    schedule 17.11.2008
comment
Я знаю, что он мертв уже 6 лет, но сейчас я переживаю эту травму. Что вы имеете в виду, когда говорите «внутри модели документа»? - person Steve Borland; 17.04.2014
comment
Если память не изменяет (это было давно), в объекте приложения есть события, которые вы можете зарегистрировать, чтобы получать уведомления при изменении активного документа. Это дает вам возможность аннулировать кнопки ленты и, таким образом, активировать обновление, чтобы отразить соответствующее состояние для нового активного документа. - person Bevan; 20.04.2014

Вы можете использовать событие Application.DocumentChange или событие Application.WindowActivate.

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

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

person Marc Climent    schedule 16.09.2009