Exposition de propriétés à la fenêtre PropriétésExposing 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 une 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 ultérieurement.You can also install the VS SDK later on. Pour plus d’informations, consultez l’installation de Visual Studio SDK.For more information, see Installing the Visual Studio SDK.

Exposition de propriétés à la fenêtre PropriétésExposing 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 des propriétés dans 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 contient les composants d’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 de l’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 / 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 de l’outil personnalisé.In the Add New Item dialog, go to Visual C# Items / Extensibility and select Custom Tool Window. Dans le nom au 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éation d’une Extension avec une fenêtre outil.For more information about how to create a custom tool window, see Creating 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. Maintenant ajouter 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 forment une liste des objets sélectionnés contenant uniquement l’objet fenêtre outil volet 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 le 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-la 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 affichage / autres fenêtres.You can find it in View / Other Windows.

    La fenêtre s’ouvre et les propriétés publiques du volet de fenêtre qui 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 la 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 modifie en conséquence.The MyToolWindow window caption changes accordingly.

Exposition de propriétés de la fenêtre outilExposing 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 apportées 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 classe MyToolWindow.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 de 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 le mode design MyToolWindowControl.Change to the design view of MyToolWindowControl.

  5. Supprimez le bouton et ajoutez une case à cocher à partir de la boîte à outils dans le coin 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 dans la vue de conception.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 de My 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 les 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 les propriétés fenêtre change pour False.IsChecked in the Properties window changes to False. Modifiez la valeur de IsChecked dans les propriétés fenêtre.Change the value of IsChecked in the Properties window. La case à cocher dans la MyToolWindow de fenêtre change 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 le 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 dans 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.

Modification des listes de sélectionChanging Selection Lists

Dans cette section, vous ajoutez une liste de sélection d’une classe de propriété de base et permet de choisir quelle liste de sélection pour afficher l’interface de la 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 une propriété SimpleObject à la classe MyToolWindow, ainsi que les deux méthodes pour basculer le propriétés entre le volet de sélection de la 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. Activez la case à cocher dans la MyToolWindow fenêtre.Select the check box in the MyToolWindow window. Le propriétés fenêtre affiche la 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.

Meilleures pratiquesBest Practice

Dans cette procédure pas à pas, ISelectionContainer est implémentée afin que la collection d’objets pouvant être sélectionnées et de 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é apparaît 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 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

Extension des propriétés et la fenêtre PropriétésExtending Properties and the Property Window