I've got a minimal VSTO Addin for Outlook 2010 with a ribbon. My only goal is to display a ribbon (created via designer) with no functionality. From what little I can tell from MSDN ribbons should just automatically be displayed by default, perhaps with tweaking ControlIdType/CustomId properties for tabs.
Alas, tweaking these properties does nothing -- Outlook loads and displays no tab. A simple message box displayed in the ribbon loader reveals it never is triggered. Additionally, I haven't seen any information resources (tutorials, walkthroughs, overviews, etc..) that say anything about needing to manually tell Outlook to display tabs.
How do I get the tabs displayed?
Is there a good resource other than MSDN that's good for VSTO newbies?
To get your ribbon displayed, on the base ribbon in your code change the RibbonType property to be Microsoft.Outlook.Explorer.
What fixed it for me (without starting a new project), in the Ribbon1.vb ribbon design, I clicked on the the Ribbon1 name above the ribbons 'File' button, in the properties pane, clicked on tabs (collection), under the heading 'Design' I changed the name (from Tab1) to something else.
Clicked ok, tested by clicking F5 and it worked. Hope this helps someone else.
Related
I am developing an Outlook plugin. I have added a ribbon with the ribbon type set to
this.RibbonType = "Microsoft.Outlook.Explorer";
and ControlId is set to TabMail. By default this ribbon shows on the Home tab in Outlook. But when I open an email in a separate window, when I switch to a different tab or when I view attachments, the ribbon does not appear. I also want to show this ribbon on the Message tab and the Attachments tab.
I have explored ways and got answers that refer to creating two ribbons, but that is not a proper solution.
I also followed this link, but with no luck.
The other solution i explored is to call event tabControl_SelectedIndexChanged on tabs to identify the current tab and then setting ribbon properties(ribbontype and ribbon control) run time.
How to do that for ribbon (Visual Designer)? Or I have to convert that into ribbon (xml)? And where to trigger that event?
Any help will be appreciated.
You should create a new Ribbon with ribbonType Microsoft.Outlook.Mail.Read and your controlId TabReadMessage
You need to choose appropriate values for the RibbonType property:
you can select such
List item
Microsoft.Outlook.Mail.Compose or
Microsoft.Outlook.Mail.Read
I am creating a new VSTO add-in for Outlook 2013 & 2016. I have setup a Ribbon (XML) with a button that fires an event, which eventually opens a standard WinForm. The design (Ribbon location, menu, popup window size & location, etc...) is based off the "Signatures" ribbon button under "New Message".
Everything is fine and dandy until I realized that some of the features I want needs Outlook-specific controls. Adding them to my project's toolbox, I found out that they can only work on Outlook Form Regions, and not standard WinForms. I am able to get this to work with the standard FormRegion under the "New Message", but this is not desired behavior. Instead, I would prefer to have it pop up much like the standard "Signature" panel.
I would prefer solutions in C#/VSTO. If a solution would require a third-party alternative to VSTO, I would rather implement this in C++ instead.
I'm programming an application in WPF using the Ribbon menu, part of the requirements for the application is that I need a commands tab, but this tab should be visible at all times and depending on the active document I would enable/disable the appropriate commands.
My question is, does anyone know a way to split the ribbon menu so that the commands tab is always visible on the right side of the menu?
I'm sure there's an easy answer for this, I just haven't found it yet.
Thanks & Regards!
It's not within the functionality of the ribbon. Why not build a grid with 2 columns, and have the ribbon in the left pane and the custom control on the right? Then you can just style the custom control to match the ribbon.
You can get the source code for the ribbon from CodePlex so you would be able to get the exact style.
It might not be what you wanted to hear, but I think it would be ideal.
Does anybody know if it is possible (and in that case how) to navigate programmatically in an Office 2010 addin?
The idea is to create a settings button on a ribbon tab, that when clicked, will direct the user to the settings of the add-in that would be located in the backstage view. Is there a way to programmatically change the active view being displayed to the user or something like that?
Thank you!!
As a developer putting on the user spectacles, I find your approach not convincing. If I click on a settings button, I expect a well-designed dialog, not to be thrown into backstage view. On the other hand - as a developr I'm much more at ease with a well-designed Windows Form than with the controls Microsoft provides for the backstage user interface; I guess you'll find there more limitations then you like.
As far as I understand your question, you want to have two different entry points to your settings dialogue - one from a button in the ribbon, and another from a point in the backstage view. Why not combining and showing from both positions the same form? Also Microsoft provides you with additional dialogues, if you click on controls in the backstage view.
Technically:
If you want to start the action of a ribbon control, you can use the "ExecuteMSO" command of the application.commmandbar object, e.g. in Word you may use
Application.CommandBars.ExecuteMso "ApplicationOptionsDialog"
to open this dialogue. However, I've done a limited test to call a custom button in backstage view, and it failed. Sol I guess that you can use ExecuteMSO only for built-in commands.
I am currently diving into VSTO add-in development and ribbon customization for Word 2010. This works fine, but has a drawback: The ribbon customization should take place for only certain documents, but the IRibbonExtensibility.GetCustomUI() method is obviously called on application startup before any document is loaded. How can I accomplish this requirement?
You're right that it's only called once. About your only choice (and what's worked for me reasonably well), is to define EVERYTHING in your ribbon up front, then set the VISIBLE property to false or true as applicable depending on what doc is loaded, or whatever else is happening in your addin.
#drventure is right, you have to define your ribbon up front, then show/hide different buttons on the ribbon.
What might help you though is some of the features in a project I have been working on, VSTO Contrib, it allows you to create a ViewModel, which will be created for each open document, and it will discover and wire up the ribbon xml by convention.
In your case this would mean you can bind the ribbon buttons visibility to a property on the viewmodel, and you don't have to worry about keeping the window/documents syncronised. Have a read of http://jake.ginnivan.net/vsto-contrib/ribbon-factory and see if it will help you solve your problem with a heap less code =)