Interagir avec des fichiers et des répertoires sur VSTO mot Addin dans Ribbon.cs

voix
0

S'il vous plaît aider. La chose est ce que je dois tout à fait simple. J'ai besoin d'un menu à partir des fichiers et des dossiers. Si j'appuie sur le dossier (nom), le menu se développe et j'obtenir la liste de ce dossier et ainsi de suite. J'ai essayé d'utiliser DropDown et je peux y obtenir les noms de fichiers ou / et les noms de dossier. Mais si je vais appuyer sur le point, la liste déroulante se replient. (Ce ne est pas ce que je dois)

//dropDown lable is: combo
 DirectoryInfo obj = new DirectoryInfo(@C:\install\);//
            DirectoryInfo[] folders = obj.GetDirectories();
            var filtered = folders.Where(f => !f.Attributes.HasFlag(FileAttributes.Hidden));
            string str = ;
            RibbonDropDownItem ddItem0 = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();

            ddItem0.Label = ${str};
            combo.Items.Clear();
            foreach (DirectoryInfo file in filtered)
            {
                str = file.Name;

                RibbonDropDownItem ddItem1 = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();
                ddItem1.Label = $Kaust:{str};
                combo.Items.Add(ddItem1);

Maby-je utiliser Menu au lieu de DropDown? Mais comment puis-je faire cela? Peu de temps: j'ai un dossier. Il y a des fichiers et des dossiers à l'intérieur. Je besoin d'un ruban « bouton » pour choisir les fichiers et les dossiers ouverts dans ce « bouton ».

Créé 09/10/2019 à 12:58
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Interface utilisateur du ruban est une chose statique de sa naissance. Les seuls changements dynamiques possibles peuvent être mises en œuvre à l'aide de ruban callbacks. Malheureusement, le concepteur de ruban disponible en VSTO add-ins ne fournit pas toutes les fonctionnalités de l'interface utilisateur Fluent, vous devez passer à l' aide d' un balisage XML brut spécifiant callbacks qui vous intéressent Voir. Démonstration: créer un onglet personnalisé en utilisant XML ruban pour commencer rapidement. Notez que vous pouvez exporter votre interface utilisateur personnalisée existante dans un fichier XML du ruban.

L'interface utilisateur Fluent (alias interface utilisateur du ruban) est décrite en détail dans la série d'articles suivants:

Pour rafraîchir votre interface utilisateur personnalisée , vous devez utiliser les IRibbonUI.Invalidate et IRibbonUI.InvalidateControl méthodes qui permettent invalident les valeurs mises en cache pour toutes les commandes (ou seulement un spécifié) de l'interface utilisateur du ruban. Ainsi, lorsqu'un élément est choisi dans un contrôle , vous pouvez forcer d' autres contrôles à mettre à jour son état et le contenu.

En fait, l' appel de la Invalidateou la InvalidateControlméthode que vous pouvez forcer votre callbacks de ruban à invoquer à nouveau. Par exemple, si un écrivain add-in met en œuvre la getImageprocédure de rappel pour un bouton, la fonction est appelée une fois, les charges d'image, et si l'image doit être mis à jour, l'image en cache est utilisé au lieu de rappeler la procédure. Ce processus reste en place pour le contrôle jusqu'à ce que les signaux d'add-en ce que les valeurs mises en cache sont invalides en utilisant la InvalidateControlméthode, à laquelle, la procédure de rappel est à nouveau appelée et la réponse de retour est mis en mémoire cache.

Dim MyRibbon As IRibbonUI
Sub MyAddInInitialize(Ribbon As IRibbonUI)
    Set MyRibbon = Ribbon
End Sub
Sub myFunction()
‘ Invalidates the caches of all of this add-in’s controls
MyRibbon.Invalidate()

End Sub

En outre, vous trouverez peut - être le dynamicMenucontrôle utile car il fournit le getContentrappel qui obtient une chaîne XML qui contient le contenu de ce menu dynamique.

Créé 09/10/2019 à 14:43
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more