Tôi đang làm việc trên một bổ trợ cấp ứng dụng Word 2007. Cho đến nay, tôi chưa gặp phải những trở ngại lớn ngoại trừ việc chuyển đổi giao diện Ribbon của trình bổ sung thành XML. Tôi phải sử dụng Ribbon XML vì tính năng tôi đang làm việc chỉ có thể được thực hiện theo cách này. Vấn đề là bằng cách chuyển sang Ribbon XML, tôi không thể truy cập giao diện vào thời gian chạy qua Globals.Ribbons nữa. Liên kết này http://msdn.microsoft.com/en-us/library/bb772088.aspx thực hiện một công việc tốt để giải thích cách truy cập vào Trình thiết kế hình ảnh nhưng nó hoàn toàn bỏ qua trường hợp XML Ribbon. Cụ thể, tôi cần có khả năng truy cập một số điều khiển hình ảnh như nhãn. Làm thế nào tôi có thể đạt được điều này?Có cách nào để truy cập Ribbon (XML) tại thời gian chạy không?
Trả lời
Globals.Ribbons là một tính năng thiết kế VSTO, nếu bạn sử dụng RibbonXML thì bạn không có tính năng này. Những gì các nhà thiết kế thực sự làm dưới vỏ là nó sẽ tạo ra xml ribbon cho Office, sau đó khi văn phòng gọi lại, VSTO sẽ tăng trình xử lý sự kiện thích hợp cho ngữ cảnh đó (tài liệu). Bởi vì bạn đang sử dụng RibbonXML bạn đang bỏ qua hỗ trợ thiết kế VSTO Ribbon hoàn toàn (tôi thích nó theo cách này, nó nhanh hơn và bạn có nhiều quyền kiểm soát hơn).
Với XML ribbon, bạn sẽ phải đăng ký gọi lại onLoad cho nhãn của bạn, Office sau đó sẽ chuyển cho bạn IRibbonControl, đó sẽ là nhãn và bạn có những thứ hạn chế bạn có thể làm. Nếu bạn muốn thay đổi văn bản sau đó ra khỏi đỉnh đầu của tôi, bạn sẽ phải đăng ký một cuộc gọi lại getText, sau đó vô hiệu hóa điều khiển ribbon đó, mà sẽ làm cho getback getText được đánh giá lại.
Có thêm thông tin về những gì bạn thực sự muốn đạt được sẽ là tiện dụng =) Tôi có cảm giác dự án contrib VSTO của tôi cũng sẽ giúp cuộc sống của bạn trở nên dễ dàng hơn nhiều, vì nó mang lại cho bạn nhiều tính năng Ribbon Designer đẹp mắt khi sử dụng ribbon xml . Nhưng hãy cho tôi biết bạn muốn làm gì và tôi có thể cung cấp cho bạn thêm thông tin về điều đó.
Chúc mừng, Jake
Khi nào bạn đang cố gắng truy cập Globals.ribbons?
Khi tôi nhớ lại, nó sẽ không được phổ biến cho đến khi gần hết giai đoạn khởi động của Word.
nếu bạn thử và truy cập quá sớm, sẽ không có bất kỳ dải băng nào được xác định.
Tôi đang cố gắng để truy cập Globals.Ribbons từ Application_DocumentOpen đó là chức năng đó được gọi khi một tài liệu mới được mở ra. Vấn đề là điều này được sử dụng để làm việc cho Ribbon thiết kế trực quan. Tuy nhiên, sau khi chuyển đổi, Globals.Ribbons.Count luôn luôn là 0 mặc dù XML Ribbon được hiển thị. – AlgolDocks
Khi làm việc với Ribbon XML, tôi đã cố gắng này, nhưng tôi không thể truy cập vào các tài sản Ribbon1 từ Globals.Ribbons .. Thuộc tính đơn giản là không có ..
Tuy nhiên, tôi đã đưa ra một giải pháp khác về cơ bản phải làm với một dàn diễn viên thích hợp.
Trong 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;
}
- 1. Tải XAML XML qua thời gian chạy?
- 2. Thay đổi menu tại thời gian chạy
- 3. Cập nhật cài đặt app.config system.net tại thời gian chạy
- 4. Làm cách nào để có thể kiểm tra thời gian chạy mà không cần thoát SecurityException?
- 5. Làm cách nào để có được thời gian bot Google truy cập lần cuối trang?
- 6. tại sao truy cập phần tử trong một mảng có thời gian không đổi?
- 7. Về thời gian truy cập unix
- 8. Truy xuất kiểu thời gian chạy VB6
- 9. Nhãn thời gian có thể truy cập trên iOS
- 10. Thay đổi App.config tại Thời gian chạy
- 11. Cách tắt counter_cache liên kết Rails tại thời gian chạy
- 12. Chạy PublicResXFileCodeGenerator tại thời gian biên dịch
- 13. Tôi làm cách nào để truy cập vào các ứng dụng Log4J được định cấu hình trong thời gian chạy?
- 14. Tìm tên sơ đồ Xcode Build tại thời gian chạy
- 15. Biến số SSIS tại thời gian chạy
- 16. Clojure: Cách tạo hàm tại thời gian chạy
- 17. Cách thay đổi Spring's @Scheduled fixedDelay tại thời gian chạy
- 18. Cách cập nhật UITableView tại thời gian chạy, sau khi xem được tải
- 19. WPF + PRISM Cách thay đổi vùng tại thời gian chạy
- 20. phương thức gọi tại thời gian chạy
- 21. Làm cách nào để loại bỏ LD_LIBRARY_PATH tại thời gian chạy?
- 22. Làm cách nào để truy cập các phần tử XML không gian tên bằng cách sử dụng BeautifulSoup?
- 23. Có cách nào để biết thời gian chạy cấp API mà thiết bị Android đang chạy?
- 24. Cách lấy nội dung/loại tệp tại thời gian chạy
- 25. Làm thế nào để có được NHibernate tạo ra SQL trong mã tại thời gian chạy?
- 26. Cách đặt cài đặt khóa recaptcha tại thời gian chạy
- 27. Cách thay đổi vị trí trang tại thời gian chạy
- 28. WPF: Cách thay đổi CurrentUICulture tại thời gian chạy
- 29. Làm thế nào để có được những DiscriminatorValue tại thời gian chạy
- 30. Có cách nào để lấy ID gói trong thời gian chạy không?
Xin chào Jake. Cảm ơn câu trả lời. Tôi thực sự đã làm rất nhiều nghiên cứu kể từ khi tôi đăng câu hỏi này và tôi đã đi đến cùng một kết luận. Tôi vẫn hy vọng rằng ai đó tìm thấy một số cách để truy cập vào giao diện từ Global.Ribbons. Dù sao, tôi thực sự chuyển đổi giải pháp của mình và bây giờ tôi sử dụng RibbonXML và callbacks để thay đổi nhãn, hiển thị thông tin và thay đổi khả năng hiển thị của các điều khiển nhất định. – AlgolDocks
Câu trả lời/câu trả lời của bạn Jake được đánh giá cao. MSDN dường như không bao gồm điều này bất cứ nơi nào. Việc vô hiệu hóa điều khiển hoạt động hoàn hảo. – Daniel