2011-04-25 30 views
9

Pracuję nad dodatkiem na poziomie aplikacji Word 2007. Do tej pory nie doświadczyłem większych przeszkód, z wyjątkiem konwersji interfejsu wstążki dodatku na XML. Muszę używać wstążki XML, ponieważ funkcja, nad którą pracuję, może być wykonana tylko w ten sposób. Problem polega na tym, że przechodząc na Ribbon XML nie mogę już uzyskać dostępu do interfejsu w czasie wykonywania za pośrednictwem Globals.Ribbons. Ten link http://msdn.microsoft.com/en-us/library/bb772088.aspx dobrze ilustruje sposób uzyskiwania dostępu do wstążki Visual Designer, ale całkowicie ignoruje przypadek wstążki XML. W szczególności muszę mieć dostęp do niektórych formantów wizualnych, takich jak etykiety. Jak mogę to osiągnąć?Czy istnieje sposób dostępu do wstążki (XML) w czasie wykonywania?

Odpowiedz

8

Globals.Ribbons to funkcja projektanta VSTO, jeśli używasz RibbonXML, to nie masz tej funkcji. To, co projektant faktycznie robi pod kołdrą, spowoduje utworzenie wstążki xml dla pakietu Office, a gdy biuro wykona wywołanie zwrotne, VSTO podejmie odpowiednią procedurę obsługi zdarzeń dla tego kontekstu (dokument). Ponieważ używasz RibbonXML, całkowicie pomijasz obsługę projektanta VSTO Ribbon (wolę to w ten sposób, jest szybszy i masz większą kontrolę).

Za pomocą wstążki XML będziesz musiał zarejestrować wywołanie zwrotne onLoad dla swojej etykiety, Urząd przekaże ci kontrolkę IRibbonControl, która będzie etykietą, a Ty masz ograniczone rzeczy, które możesz zrobić. Jeśli chcesz zmienić tekst, a następnie wyłączyć go z mojej głowy, musisz zarejestrować wywołanie zwrotne getText, a następnie unieważnić kontrolę wstążki, co spowoduje ponowne oszacowanie wywołania zwrotnego getText.

Posiadanie więcej informacji o tym, co naprawdę chcesz osiągnąć, byłoby przydatne.) Mam wrażenie, że mój projekt contribu VSTO znacznie ułatwi ci życie, ponieważ daje wiele ciekawych funkcji wstążki Designer przy użyciu wstążki xml . Ale daj mi znać, co chcesz zrobić, i dam ci więcej informacji na ten temat.

Cheers, Jake

+0

Cześć Jake. Dziękuję za odpowiedź. Zrobiłem wiele badań odkąd opublikowałem to pytanie i doszedłem do tego samego wniosku. Wciąż miałem nadzieję, że ktoś znalazł sposób na uzyskanie dostępu do interfejsu z Global.Ribbons. W każdym razie, faktycznie skonwertowałem swoje rozwiązanie i teraz używam RibbonXML i wywołań zwrotnych, aby zmienić etykiety, wyświetlić informacje i zmienić widoczność niektórych kontrolek. – AlgolDocks

+0

Twoja odpowiedź/odpowiedź Jake jest bardzo doceniany. Wydaje się, że MSDN nie obejmuje tego nigdzie. Unieważnienie kontroli działało idealnie. – Daniel

1

Kiedy próbujesz uzyskać dostęp do Globals.ribbons?

Przypominam, że nie zostanie wypełniony, dopóki nie zbliży się do końca fazy uruchamiania programu Word.

jeśli spróbujesz uzyskać do niego dostęp zbyt wcześnie, nie będzie jeszcze zdefiniowanych wstążek.

+0

Próbuję uzyskać dostęp do Globals.Ribbons z Application_DocumentOpen który jest funkcja, która jest wywoływana, gdy nowy dokument jest otwarty. Rzecz w tym, że wcześniej działało to na wstążce Visual Designer. Jednak po przełączeniu Globals.Ribbons.Count ma zawsze wartość 0, mimo że wyświetlana jest wstążka XML. – AlgolDocks

3

Podczas pracy z XML wstążki, próbowałem tego, ale nie może uzyskać dostępu do właściwości Ribbon1 z Globals.Ribbons .. Obiekt proste nie było ..

Jednak wymyśliłem inne rozwiązanie, które w zasadzie miało związek z właściwym typem obsady.

W ThisAddIn.cs:

private Microsoft.Office.Core.IRibbonExtensibility ribbonObj; 
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
{ 
ribbonObj = new Ribbon1(this); 
return ribbonObj; 
} 

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
// Calling the public method TEST() in Ribbon1.cs 
//MyNameSpace is the namespace used in your project ie., your project name 
((MyNameSpace.Ribbon1)ribbonObj).TEST(); 
// Calling the public variable flag in Ribbon1.cs 
((MyNameSpace.Ribbon1)ribbonObj).flag; 
} 
Powiązane problemy