Partager via


Procédure pas - à - pas : exposer des propriétés dans la fenêtre Propriétés

Cette procédure pas - à - pas expose les propriétés publiques d'un objet dans la fenêtre de Propriétés . Les modifications apportées à ces propriétés sont répercutées dans la fenêtre de Propriétés .

Composants requis

Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010.

Notes

Pour plus d'informations sur le kit de développement Visual Studio, consultez Étendre la présentation de Visual Studio.Pour savoir comment télécharger le kit de développement Visual Studio, consultez Visual Studio Extensibility Developer Center sur le site Web MSDN.

Emplacements du modèle de projet de package Visual Studio

Le modèle de projet de package Visual Studio se trouve dans trois emplacements différents dans la boîte de dialogue Nouveau projet :

  1. Sous l'extensibilité Visual Basic. Le langage par défaut du projet est en Visual Basic.

  2. Sous l'extensibilité c#. Le langage par défaut du projet est c#.

  3. Sous d'autres projets contenus l'extensibilité. Le langage par défaut du projet est en C++.

exposer des propriétés dans la fenêtre Propriétés

Dans cette section, vous créez un package de base de la fenêtre Outil et affichez les propriétés publiques de l'objet associé de volet de la fenêtre dans la fenêtre de Propriétés .

pour exposer des propriétés dans la fenêtre Propriétés

  1. créez un package MyObjectPropsnommé par projet de Visual Studio .

    Pour plus d'informations sur la création d'un VSPackage managé, consultez Procédure pas - à - pas : Créer une commande de menu à l'aide de le modèle de package Visual Studio.

  2. Dans la page de Sélectionner un langage de programmation , sélectionnez Visual C#. Vous pouvez utiliser Visual Basic pour créer un package, mais utilise Visual c# de cette procédure pas - à - pas.

  3. Dans la page de Sélectionnez les options d'un VSPackage , sélectionnez fenêtre Outil.

  4. Sur la page d' options de fenêtre Outil , modifiez Nom de la fenêtre à propriétés d'objet My, puis cliquez sur Terminer.

    le modèle crée le projet managé, MyObjectProps.

  5. Ouvrez le fichier, MyToolWindow.cs, puis ajoutez les champs suivants à la classe d' MyToolWindow .

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
  6. Ajoutez le code suivant à la classe de MyToolWindow.

        Private ReadOnly Property TrackSelection() As ITrackSelection
            Get 
                If trackSel Is Nothing Then
                    trackSel = TryCast(GetService(GetType(STrackSelection)), ITrackSelection)
                End If 
                Return trackSel
            End Get 
        End Property 
    
        Public Sub UpdateSelection()
            Dim track As ITrackSelection = TrackSelection
            If track IsNot Nothing Then
                track.OnSelectChange(DirectCast(selContainer, ISelectionContainer))
            End If 
        End Sub 
    
        Public Sub SelectList(ByVal list As ArrayList)
            selContainer = New SelectionContainer(True, False)
            selContainer.SelectableObjects = list
            selContainer.SelectedObjects = list
            UpdateSelection()
        End Sub 
    
        Public Overloads Overrides Sub OnToolWindowCreated()
            Dim listObjects As New ArrayList()
            listObjects.Add(Me)
            SelectList(listObjects)
        End Sub 
        Private checked As Boolean = False
        <Category("My Properties")> _
        <Description("MyControl properties")> _
        Public Property IsChecked() As Boolean 
            Get 
                Return IsChecked
            End Get 
            Set(ByVal value As Boolean)
                checked = value
                control.checkBox1.Checked = value
            End Set 
        End Property 
        Private sObject As Simple = Nothing 
        Public ReadOnly Property SimpleObject() As Simple
            Get 
                If sObject Is Nothing Then
                    SimpleObject = New Simple()
                End If 
                Return sObject
            End Get 
        End Property 
        Public Sub SelectSimpleList()
            Dim listObjects As New ArrayList()
            listObjects.Add(SimpleObject)
            SelectList(listObjects)
        End Sub 
    
        Public Sub SelectThisList()
            Dim listObjects As New ArrayList()
            listObjects.Add(Me)
            SelectList(listObjects)
        End Sub
    
    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);
    }
    

    La propriété d' TrackSelection utilise GetService pour obtenir un service d' STrackSelection , qui fournit une interface d' ITrackSelection . Le gestionnaire d'événements d' OnToolWindowCreated et la méthode d' SelectList créent ensemble une liste d'objets sélectionnés qui contient uniquement l'objet de volet de la fenêtre Outil lui-même. La méthode d' UpdateSelection indique la fenêtre de Propriétés afficher les propriétés publiques du volet de la fenêtre Outil.

  7. Générez et exécutez le projet en mode débogage en appuyant sur F5. Cette action démarre Visual Studio Exp.

    Notes

    deux versions de Visual Studio sont ouvertes maintenant.

  8. si la fenêtre de Propriétés n'est pas visible, ouvrez-la en appuyant sur F4.

  9. Dans Visual Studio Exp, dans le menu d' Afficher , pointez sur Autres fenêtres, puis cliquez sur propriétés d'objet My.

    La fenêtre s'ouvre et les propriétés publiques du volet de la fenêtre s'affichent dans la fenêtre de Propriétés .

  10. Cliquez sur dans Explorateur de solutions. les propriétés dans la fenêtre de Propriétés disparaissent. Cliquez sur la fenêtre du propriétés d'objet My . les propriétés réapparaissent.

  11. Affectez à la propriété de légende dans la fenêtre de Propriétés à Autre élément.

    Titre de la fenêtre Propriétés d'objet My change en conséquence.

Exposer des propriétés de la fenêtre Outil

Dans cette section, vous ajoutez une fenêtre Outil et à exposer ses propriétés. Les modifications apportées aux propriétés sont répercutées dans la fenêtre de Propriétés .

Pour exposer des propriétés de la fenêtre Outil

  1. Fermez Visual Studio Exp.

  2. ouvrez MyToolWindow.cs, et ajoutez la propriété IsChecked d' public boolean à la classe de MyToolWindow.

    Private checked As Boolean = False
    <Category("My Properties")> _
    <Description("MyControl properties")> _
    Public Property IsChecked() As Boolean 
        Get 
            Return IsChecked
        End Get 
        Set(ByVal value As Boolean)
            checked = value
            control.checkBox1.Checked = value
        End Set 
    End Property
    
    [Category("My Properties")]
    [Description("MyControl properties")]
    public bool IsChecked
    {
        get {
            if (base.Content == null)  return false;
            return (bool)((MyControl) base.Content).checkBox1.IsChecked; 
        }
        set {
            ((MyControl) base.Content).checkBox1.IsChecked = value;
        }
    }
    

    Cette propriété la lit et écrit son état directement de la case à cocher WPF que vous créez dans une étape ultérieure.

  3. dans le constructeur d' MyToolWindow , ajoutez un mot clé d' this au constructeur d' MyControl :

    control = New MyControl(Me)
    
    base.Content = new MyControl(this);
    
  4. Ouvrez le fichier, MyControl.xaml.cs, puis remplacez le constructeur en utilisant le code suivant.

    Private pane As MyToolWindow
    Public Sub New(ByVal pane As MyToolWindow)
        InitializeComponent()
        Me.pane = pane
        checkBox1.Checked = pane.IsChecked
    End Sub
    
    private MyToolWindow pane;
    public MyControl(MyToolWindow pane)
    {
        InitializeComponent();
        this.pane = pane;
        checkBox1.IsChecked = false;
    }
    

    Cela donne accès d' MyControl dans le volet d' MyToolWindow .

  5. Modification en mode Design.

  6. supprimez le contrôle bouton. Ajoutez une case à cocher de boîte à outils à l'angle supérieur et gauche.

  7. Double-cliquez sur la case à cocher.

    Cela crée le gestionnaire d'événements d' checkBox1_Checked et l'ouvre dans l'éditeur de code.

  8. Dans la fenêtre Propriétés, double-cliquez sur le gestionnaire d'événements d' checkBox1Désactivé .

    Cela crée le gestionnaire d'événements d' checkBox1_Unchecked et l'ouvre dans l'éditeur de code.

  9. Remplacez les gestionnaires d'événements de la case à cocher à l'aide de le code suivant.

    Private Sub checkBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles checkBox1.CheckedChanged
        pane.IsChecked = checkBox1.Checked
        pane.UpdateSelection()
        If pane.IsChecked Then
            pane.SelectSimpleList()
        Else
            pane.SelectThisList()
        End If 
    End Sub
    
    private void checkBox1_Checked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = true;
        pane.UpdateSelection();
    }
    private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = false;
        pane.UpdateSelection();
    }
    
  10. Générez et exécutez le projet en mode débogage en appuyant sur F5. Cette action démarre Visual Studio Exp.

  11. Dans Visual Studio Exp, dans le menu d' Afficher , pointez sur Autres fenêtres, puis cliquez sur propriétés d'objet My.

    Les propriétés publiques du volet de la fenêtre s'affichent dans la fenêtre de Propriétés . la propriété d' IsChecked apparaît sous la catégorie, mes propriétés.

  12. cliquez sur la propriété d' IsChecked .

    la description propriétés de MyControl apparaît en bas de la fenêtre de Propriétés .

  13. Activez la case à cocher dans la fenêtre Propriétés d'objet My. modifications d'IsChecked à True. désactivez la case à cocher. modifications d'IsChecked à False. modifiez la valeur d' IsChecked dans la fenêtre de Propriétés . La case à cocher dans la fenêtre Propriétés d'objet My change conformément à la nouvelle valeur.

    Notes

    Si vous devez disposer d'une propriété ou un objet affiché dans la fenêtre de Propriétés , appelez OnSelectChange avec un conteneur de sélection d' null en premier.Après avoir supprimé la propriété de l'objet ou, vous pouvez passer à un conteneur de sélection qui a mis à jour SelectableObjects et des listes d' SelectedObjects .

Modifier les listes de sélection

Dans cette section, vous ajoutez une liste de choix pour une classe de propriété de base et utilisez l'interface de fenêtre Outil pour choisir quelle liste de sélection à afficher.

Pour modifier des listes de choix

  1. Fermez Visual Studio Exp.

  2. Ouvrez MyToolWindow.cs ou MyToolWindow.vb, et ajoutez la classe publique, Simple, au début du fichier, juste après l'instruction de l'espace de noms et la parenthèse de curlique d'ouverture.

    Public Class Simple
        Private m_someText As String = ""
    
        <Category("My Properties")> _
        <Description("Simple Properties")> _
        <DisplayName("MyText")> _
        Public Property SomeText() As String 
            Get 
                Return m_someText
            End Get 
            Set(ByVal value As String)
                m_someText = value
            End Set 
        End Property
    
        <Category("My Properties")> _
        <Description("Read-only property")> _
        Public ReadOnly Property [ReadOnly]() As String 
            Get 
                Return "Hello" 
            End Get 
        End Property 
    End Class
    
    public class Simple
    {
        private string someText = "";
    
        [Category("My Properties")]
        [Description("Simple Properties")]
        [DisplayName("MyText")]
        public string SomeText
        {
            get { return someText; }
            set { someText = value; }
        }
    
        [Category("My Properties")]
        [Description("Read-only property")]
        public string ReadOnly
        {
            get { return "Hello"; }
        }
    }
    

    Un objet de type Simple possède des propriétés de type chaîne publiques, SomeText, et ReadOnly.

  3. Ajoutez ce code à la fin de la classe d' MyToolWindow , après la propriété d'IsChecked.

    Private sObject As Simple = Nothing 
    Public ReadOnly Property SimpleObject() As Simple
        Get 
            If sObject Is Nothing Then
                SimpleObject = New Simple()
            End If 
            Return sObject
        End Get 
    End Property 
    Public Sub SelectSimpleList()
        Dim listObjects As New ArrayList()
        listObjects.Add(SimpleObject)
        SelectList(listObjects)
    End Sub 
    
    Public Sub SelectThisList()
        Dim listObjects As New ArrayList()
        listObjects.Add(Me)
        SelectList(listObjects)
    End Sub
    
    public void SelectSimpleList()
    {
        ArrayList listObjects = new ArrayList();
        listObjects.Add(SimpleObject);
        SelectList(listObjects);
    }
    
    public void SelectThisList()
    {
        ArrayList listObjects = new ArrayList();
        listObjects.Add(this);
        SelectList(listObjects);
    }
    

    Cela crée la propriété de singleton, SimpleObject, et deux méthodes pour basculer la sélection de la fenêtre de Propriétés entre le volet de la fenêtre et l'objet d' Simple .

  4. Ouvrez MyControl.cs ou MyControl.vb en mode Code. Remplacez les gestionnaires de case à cocher avec ces lignes de code :

    If pane.IsChecked Then
        pane.SelectSimpleList()
    Else
        pane.SelectThisList()
    End If
    
    private void checkBox1_Checked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = true;
        pane.SelectSimpleList();
        pane.UpdateSelection();
    }
    private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = false;
        pane.SelectThisList();
        pane.UpdateSelection();
    }
    
  5. Générez et exécutez le projet en mode débogage en appuyant sur F5.

    Cette action démarre Visual Studio Exp.

  6. Dans Visual Studio Exp, dans le menu d' Afficher , pointez sur Autres fenêtres, puis cliquez sur propriétés d'objet My.

    La fenêtre s'ouvre et les propriétés publiques du volet de la fenêtre s'affichent dans la fenêtre de Propriétés .

  7. Activez la case à cocher dans la fenêtre Propriétés d'objet My. la fenêtre de Propriétés affiche les propriétés de l'objet, SomeText et en lecture seuled' Simple . désactivez la case à cocher. Les propriétés publiques du volet de la fenêtre s'affichent dans la fenêtre de Propriétés .

    Notes

    le nom complet de Du texte est mon texte.

recommandation

Dans cette procédure pas - à - pas, ISelectionContainer est implémenté afin que la collection sélectionnable d'objet et la collection d'objets aient la même collection. Seul l'objet sélectionné s'affiche dans la liste de l'Explorateur de propriétés. Pour un plus l'implémentation complète d'ISelectionContainer, consultez les exemples de Reference.ToolWindow.

Les fenêtres outil Visual Studio sont persistantes entre les sessions Visual Studio. Pour plus d'informations sur rendre persistant l'état de fenêtre Outil, consultez l' ProvideProfileAttribute.

Voir aussi

Concepts

Prise en charge de l'Explorateur de propriétés

Autres ressources

État d'un VSPackage