Exposer des propriétés à la fenêtre PropriétésExpose properties to the Properties window

Cette procédure pas à pas expose les propriétés publiques d’un objet pour le propriétés fenêtre.This walkthrough exposes the public properties of an object to the Properties window. Les modifications apportées à ces propriétés sont répercutées dans le propriétés fenêtre.The changes you make to these properties are reflected in the Properties window.

PrérequisPrerequisites

À partir de Visual Studio 2015, vous n’installez pas le Kit de développement logiciel Visual Studio à partir du centre de téléchargement.Starting in Visual Studio 2015, you do not install the Visual Studio SDK from the download center. Il est inclus comme fonctionnalité facultative dans le programme d’installation de Visual Studio.It is included as an optional feature in Visual Studio setup. Vous pouvez également installer le kit SDK VS par la suite.You can also install the VS SDK later on. Pour plus d’informations, consultez installer le SDK Visual Studio.For more information, see Install the Visual Studio SDK.

Exposer des propriétés à la fenêtre PropriétésExpose properties to the Properties window

Dans cette section, vous créez une fenêtre Outil personnalisée et afficher les propriétés publiques de l’objet de volet de fenêtre associée dans le propriétés fenêtre.In this section, you create a custom tool window and display the public properties of the associated window pane object in the Properties window.

Pour exposer les propriétés à la fenêtre PropriétésTo expose properties to the Properties window

  1. Chaque extension de Visual Studio commence par un projet de déploiement VSIX qui contiendra les ressources de l’extension.Every Visual Studio extension starts with a VSIX deployment project which will contain the extension assets. Créer un Visual StudioVisual Studio projet VSIX nommé MyObjectPropertiesExtension.Create a Visual StudioVisual Studio VSIX project named MyObjectPropertiesExtension. Vous pouvez trouver le modèle de projet VSIX dans le nouveau projet boîte de dialogue sous Visual C# > extensibilité.You can find the VSIX project template in the New Project dialog under Visual C# > Extensibility.

  2. Ajouter une fenêtre outil en ajoutant un modèle d’élément de fenêtre d’outil personnalisé nommé MyToolWindow.Add a tool window by adding a Custom Tool Window item template named MyToolWindow. Dans le l’Explorateur de solutions, cliquez sur le nœud du projet et sélectionnez ajouter > un nouvel élément.In the Solution Explorer, right-click the project node and select Add > New Item. Dans le boîte de dialogue Ajouter un nouvel élément, accédez à éléments Visual c# > extensibilité et sélectionnez fenêtre d’outil personnalisé.In the Add New Item dialog, go to Visual C# Items > Extensibility and select Custom Tool Window. Dans le nom en bas de la boîte de dialogue, modifiez le nom de fichier à MyToolWindow.cs.In the Name field at the bottom of the dialog, change the file name to MyToolWindow.cs. Pour plus d’informations sur la création d’une fenêtre Outil personnalisée, consultez créer une extension avec une fenêtre outil.For more information about how to create a custom tool window, see Create an extension with a tool window.

  3. Ouvrez MyToolWindow.cs et ajoutez le code suivant à l’aide d’instruction :Open MyToolWindow.cs and add the following using statement:

    using System.Collections;  
    using System.ComponentModel;  
    using Microsoft.VisualStudio.Shell.Interop;  
    
  4. Ajoutez maintenant les champs suivants à la MyToolWindow classe.Now add the following fields to the MyToolWindow class.

    private ITrackSelection trackSel;  
    private SelectionContainer selContainer;  
    
  5. Ajoutez le code suivant à la classe MyToolWindow.Add the following code to the MyToolWindow class.

    private ITrackSelection TrackSelection  
    {  
        get  
        {  
            if (trackSel == null)  
                trackSel =  
                   GetService(typeof(STrackSelection)) as ITrackSelection;  
            return trackSel;  
        }  
    }  
    
    public void UpdateSelection()  
    {  
        ITrackSelection track = TrackSelection;  
        if (track != null)  
            track.OnSelectChange((ISelectionContainer)selContainer);  
    }  
    
    public void SelectList(ArrayList list)  
    {  
        selContainer = new SelectionContainer(true, false);  
        selContainer.SelectableObjects = list;  
        selContainer.SelectedObjects = list;  
        UpdateSelection();  
    }  
    
    public override void OnToolWindowCreated()  
    {  
        ArrayList listObjects = new ArrayList();  
        listObjects.Add(this);  
        SelectList(listObjects);  
    }  
    

    Le TrackSelection propriété utilise GetService pour obtenir un STrackSelection service, qui fournit un ITrackSelection interface.The TrackSelection property uses GetService to obtain an STrackSelection service, which provides an ITrackSelection interface. Le OnToolWindowCreated Gestionnaire d’événements et SelectList méthode créent ensemble une liste d’objets sélectionnés qui contient uniquement l’outil fenêtre volet objet lui-même.The OnToolWindowCreated event handler and SelectList method together create a list of selected objects that contains only the tool window pane object itself. Le UpdateSelection méthode indique à la propriétés fenêtre pour afficher les propriétés publiques du volet de fenêtre outil.The UpdateSelection method tells the Properties window to display the public properties of the tool window pane.

  6. Générez le projet et commencez le débogage.Build the project and start debugging. L’instance expérimentale de Visual Studio doit apparaître.The experimental instance of Visual Studio should appear.

  7. Si le propriétés fenêtre n’est pas visible, ouvrez-le en appuyant sur F4.If the Properties window is not visible, open it by pressing F4.

  8. Ouvrez le MyToolWindow fenêtre.Open the MyToolWindow window. Vous pouvez le trouver dans vue > Windows autres.You can find it in View > Other Windows.

    La fenêtre s’ouvre et les propriétés publiques du volet de fenêtre s’affichent dans le propriétés fenêtre.The window opens and the public properties of the window pane appear in the Properties window.

  9. Modifier le légende propriété dans le propriétés fenêtre à mes propriétés de l’objet.Change the Caption property in the Properties window to My Object Properties.

    La légende de fenêtre MyToolWindow change en conséquence.The MyToolWindow window caption changes accordingly.

Exposer des propriétés de la fenêtre outilExpose tool window properties

Dans cette section, vous ajoutez une fenêtre outil et exposez ses propriétés.In this section, you add a tool window and expose its properties. Les modifications que vous apportez aux propriétés sont répercutées dans le propriétés fenêtre.The changes you make to properties are reflected in the Properties window.

Pour exposer les propriétés de la fenêtre outilTo expose tool window properties

  1. Ouvrez MyToolWindow.cs, et ajoutez la propriété booléenne publique IsChecked à la MyToolWindow classe.Open MyToolWindow.cs, and add the public boolean property IsChecked to the MyToolWindow class.

    [Category("My Properties")]  
    [Description("MyToolWindowControl properties")]  
    public bool IsChecked  
    {  
        get {  
            if (base.Content == null)  return false;  
            return (bool)(( MyToolWindowControl) base.Content).checkBox.IsChecked;   
        }  
        set {  
            ((MyToolWindowControl) base.Content).checkBox.IsChecked = value;  
        }  
    }  
    

    Cette propriété obtient son état à partir de la case à cocher WPF que vous créerez ultérieurement.This property gets its state from the WPF checkbox you will create later.

  2. Ouvrez MyToolWindowControl.xaml.cs et remplacez le constructeur MyToolWindowControl par le code suivant.Open MyToolWindowControl.xaml.cs and replace the MyToolWindowControl constructor with the following code.

    private MyToolWindow pane;  
    public MyToolWindowControl(MyToolWindow pane)  
    {  
        InitializeComponent();  
        this.pane = pane;  
        checkBox.IsChecked = false;  
    }  
    

    Cela donne MyToolWindowControl l’accès à la MyToolWindow volet.This gives MyToolWindowControl access to the MyToolWindow pane.

  3. Dans MyToolWindow.cs, modifiez le MyToolWindow constructeur comme suit :In MyToolWindow.cs, change the MyToolWindow constructor as follows:

    base.Content = new MyToolWindowControl(this);  
    
  4. Modifier l’affichage de conception de MyToolWindowControl.Change to the design view of MyToolWindowControl.

  5. Supprimez le bouton et ajoutez une case à cocher à partir de la boîte à outils vers l’angle supérieur gauche.Delete the button and add a check box from the Toolbox to the upper left corner.

  6. Ajoutez les événements Checked et Unchecked.Add the Checked and Unchecked events. Sélectionnez la case à cocher en mode design.Select the checkbox in the design view. Dans le propriétés fenêtre, cliquez sur le bouton de gestionnaires d’événements (en haut à droite de la propriétés fenêtre).In the Properties window, click the event handlers button (at the top right of the Properties window). Rechercher Checked et type checkbox_Checked dans la zone de texte, puis recherchez Unchecked et type checkbox_Unchecked dans la zone de texte.Find Checked and type checkbox_Checked in the text box, then find Unchecked and type checkbox_Unchecked in the text box.

  7. Ajoutez les gestionnaires d’événements de case à cocher :Add the check box event handlers:

    private void checkbox_Checked(object sender, RoutedEventArgs e)  
    {  
        pane.IsChecked = true;  
        pane.UpdateSelection();  
    }  
    private void checkbox_Unchecked(object sender, RoutedEventArgs e)  
    {  
        pane.IsChecked = false;  
        pane.UpdateSelection();  
    }  
    
  8. Générez le projet et commencez le débogage.Build the project and start debugging.

  9. Dans l’instance expérimentale, ouvrez le MyToolWindow fenêtre.In the experimental instance, open the MyToolWindow window.

    Rechercher les propriétés de la fenêtre dans le propriétés fenêtre.Look for the window's properties in the Properties window. Le IsChecked propriété apparaît en bas de la fenêtre, sous le propriétés mon catégorie.The IsChecked property appears at the bottom of the window, under the My Properties category.

  10. Activer la case à cocher dans la MyToolWindow fenêtre.Check the check box in the MyToolWindow window. IsChecked dans le propriétés fenêtre change pour True.IsChecked in the Properties window changes to True. Désactivez la case à cocher dans la MyToolWindow fenêtre.Clear the check box in the MyToolWindow window. IsChecked dans le propriétés fenêtre change pour False.IsChecked in the Properties window changes to False. Modifiez la valeur de IsChecked dans le propriétés fenêtre.Change the value of IsChecked in the Properties window. La case à cocher dans la MyToolWindow des modifications de fenêtre pour correspondre à la nouvelle valeur.The check box in the MyToolWindow window changes to match the new value.

    Note

    Si vous devez supprimer un objet qui est affiché dans le propriétés fenêtre, appelez OnSelectChange avec un null conteneur de sélection premier.If you must dispose of an object that is displayed in the Properties window, call OnSelectChange with a null selection container first. Après avoir supprimé la propriété ou l’objet, vous pouvez modifier pour un conteneur de sélection qui a mis à jour SelectableObjects et SelectedObjects répertorie.After disposing the property or object, you can change to a selection container that has updated SelectableObjects and SelectedObjects lists.

Modifier les listes de sélectionChange selection lists

Dans cette section, vous ajoutez une liste de sélection pour une classe de propriété de base et permet de choisir quelle liste de sélection pour afficher l’interface de fenêtre outil.In this section, you add a selection list for a basic property class and use the tool window interface to choose which selection list to display.

Pour modifier les listes de sélectionTo change selection lists

  1. Ouvrez MyToolWindow.cs et ajoutez une classe publique nommée Simple.Open MyToolWindow.cs and add a public class named Simple.

    public class Simple  
    {  
        private string someText = "";  
    
        [Category("My Properties")]  
        [Description("Simple Properties")]  
        [DisplayName("My Text")]  
        public string SomeText  
        {  
            get { return someText; }  
            set { someText = value; }  
        }  
    
        [Category("My Properties")]  
        [Description("Read-only property")]  
        public bool ReadOnly  
        {  
            get { return false; }  
        }  
    }  
    
  2. Ajouter un SimpleObject propriété le MyToolWindow classe, ainsi que les deux méthodes pour basculer le propriétés sélection de fenêtre entre le volet de fenêtre et la Simple objet.Add a SimpleObject property to the MyToolWindow class, plus two methods to switch the Properties window selection between the window pane and the Simple object.

    private Simple simpleObject = null;  
    public Simple SimpleObject  
    {  
        get  
        {  
            if (simpleObject == null) simpleObject = new Simple();  
            return simpleObject;  
        }  
    }  
    
    public void SelectSimpleList()  
    {  
        ArrayList listObjects = new ArrayList();  
        listObjects.Add(SimpleObject);  
        SelectList(listObjects);  
    }  
    
    public void SelectThisList()  
    {  
        ArrayList listObjects = new ArrayList();  
        listObjects.Add(this);  
        SelectList(listObjects);  
    }  
    
  3. Dans MyToolWindowControl.cs, remplacez les gestionnaires de case à cocher avec ces lignes de code :In MyToolWindowControl.cs, replace the check box handlers with these lines of code:

    private void checkbox_Checked(object sender, RoutedEventArgs e)  
     {  
        pane.IsChecked = true;  
        pane.SelectSimpleList();  
        pane.UpdateSelection();  
    }  
    private void checkbox_Unchecked(object sender, RoutedEventArgs e)  
    {  
        pane.IsChecked = false;  
        pane.SelectThisList();  
        pane.UpdateSelection();  
    }  
    
  4. Générez le projet et commencez le débogage.Build the project and start debugging.

  5. Dans l’instance expérimentale, ouvrez le MyToolWindow fenêtre.In the experimental instance, open the MyToolWindow window.

  6. Sélectionnez la case à cocher dans la MyToolWindow fenêtre.Select the check box in the MyToolWindow window. Le propriétés fenêtre affiche le Simple propriétés, de l’objet SomeText et ReadOnly.The Properties window displays the Simple object properties, SomeText and ReadOnly. Désactivez la case à cocher.Clear the check box. Les propriétés publiques de la fenêtre s’affichent dans le propriétés fenêtre.The public properties of the window appear in the Properties window.

    Note

    Le nom complet de SomeText est mon texte.The display name of SomeText is My Text.

Il est recommandéBest practice

Dans cette procédure pas à pas, ISelectionContainer est implémenté afin que la collection d’objets sélectionnables et la collection d’objets sélectionnés sont la même collection.In this walkthrough, ISelectionContainer is implemented so that the selectable object collection and the selected object collection are the same collection. Seul l’objet sélectionné s’affiche dans la liste de l’Explorateur de propriétés.Only the selected object appears in the Property Browser list. Pour une implémentation de ISelectionContainer plus complète, consultez les exemples de Reference.ToolWindow.For a more complete ISelectionContainer implementation, see the Reference.ToolWindow samples.

Fenêtres Outil Visual Studio persistent entre les sessions de Visual Studio.Visual Studio tool windows persist between Visual Studio sessions. Pour plus d’informations sur la conservation de l’état de la fenêtre outil, consultez ProvideProfileAttribute.For more information on persisting the tool window state, see ProvideProfileAttribute.

Voir aussiSee also

Étendre les propriétés et la fenêtre PropriétésExtend properties and the Property window