Share via


Verfügbarmachen von Eigenschaften für die Eigenschaftenfenster

In dieser exemplarischen Vorgehensweise werden die öffentlichen Eigenschaften eines Objekts für das Eigenschaftenfenster verfügbar gemacht. Die Änderungen, die Sie an diesen Eigenschaften vornehmen, werden im Eigenschaftenfenster widerzuspiegeln.

Verfügbarmachen von Eigenschaften für die Eigenschaftenfenster

In diesem Abschnitt erstellen Sie ein benutzerdefiniertes Toolfenster und zeigen die öffentlichen Eigenschaften des zugeordneten Fensterbereichsobjekts im Eigenschaftenfenster an.

So machen Sie Eigenschaften für die Eigenschaftenfenster verfügbar

  1. Jede Visual Studio-Erweiterung beginnt mit einem VSIX-Bereitstellungsprojekt, das die Erweiterungsressourcen enthält. Erstellen Sie ein Visual Studio VSIX-Projekt mit dem Namen MyObjectPropertiesExtension. Sie finden die VSIX-Projektvorlage im Dialogfeld "Neues Projekt ", indem Sie nach "vsix" suchen.

  2. Fügen Sie ein Toolfenster hinzu, indem Sie eine Elementvorlage für ein benutzerdefiniertes Toolfenster mit dem Namen MyToolWindowhinzufügen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Hinzufügen>Neues Element aus. Wechseln Sie im Dialogfeld "Neues Element hinzufügen" zur Erweiterbarkeit von Visual C#-Elementen>, und wählen Sie "Benutzerdefiniertes Toolfenster" aus. Ändern Sie im Feld "Name " unten im Dialogfeld den Dateinamen in "MyToolWindow.cs". Weitere Informationen zum Erstellen eines benutzerdefinierten Toolfensters finden Sie unter Erstellen einer Erweiterung mit einem Toolfenster.

  3. Öffnen Sie MyToolWindow.cs , und fügen Sie die folgende using-Anweisung hinzu:

    using System.Collections;
    using System.ComponentModel;
    using Microsoft.VisualStudio.Shell.Interop;
    
  4. Fügen Sie nun der Klasse die folgenden Felder hinzu MyToolWindow .

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
    
  5. Fügen Sie der MyToolWindow -Klasse den folgenden Code hinzu.

    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);
    }
    

    Die TrackSelection Eigenschaft verwendet GetService , um einen STrackSelection Dienst abzurufen, der eine ITrackSelection Schnittstelle bereitstellt. Der OnToolWindowCreated Ereignishandler und SelectList die Methode erstellen zusammen eine Liste ausgewählter Objekte, die nur das Toolfensterobjekt selbst enthält. Die UpdateSelection Methode weist das Eigenschaftenfenster an, die öffentlichen Eigenschaften des Toolfensterfensters anzuzeigen.

  6. Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz von Visual Studio sollte angezeigt werden.

  7. Wenn das Eigenschaftenfenster nicht sichtbar ist, öffnen Sie es, indem Sie F4 drücken.

  8. Öffnen Sie das Fenster "MyToolWindow ". Sie finden sie unter "Andere Fenster anzeigen>".

    Das Fenster wird geöffnet, und die öffentlichen Eigenschaften des Fensterbereichs werden im Eigenschaftenfenster angezeigt.

  9. Ändern Sie die Caption-Eigenschaft im Eigenschaftenfenster in "Meine Objekteigenschaften".

    Das Fenster "MyToolWindow" Untertitel ändert sich entsprechend.

Verfügbarmachen von Toolfenstereigenschaften

In diesem Abschnitt fügen Sie ein Toolfenster hinzu und machen dessen Eigenschaften verfügbar. Die Änderungen, die Sie an Eigenschaften vornehmen, werden im Eigenschaftenfenster angezeigt.

So machen Sie Toolfenstereigenschaften verfügbar

  1. Öffnen Sie MyToolWindow.cs, und fügen Sie der MyToolWindow Klasse die öffentliche boolesche Eigenschaft IsChecked hinzu.

    [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;
        }
    }
    

    Diese Eigenschaft ruft ihren Status über das WPF-Kontrollkästchen ab, das Sie später erstellen.

  2. Öffnen Sie MyToolWindowControl.xaml.cs , und ersetzen Sie den MyToolWindowControl-Konstruktor durch den folgenden Code.

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

    Dadurch erhalten Sie MyToolWindowControl Zugriff auf den MyToolWindow Bereich.

  3. Ändern Sie in "MyToolWindow.cs" den MyToolWindow Konstruktor wie folgt:

    base.Content = new MyToolWindowControl(this);
    
  4. Ändern Sie die Entwurfsansicht von MyToolWindowControl.

  5. Löschen Sie die Schaltfläche, und fügen Sie der oberen linken Ecke ein Kontrollkästchen aus der Toolbox hinzu.

  6. Fügen Sie die aktivierten und deaktivierten Ereignisse hinzu. Aktivieren Sie das Kontrollkästchen in der Entwurfsansicht. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche "Ereignishandler" (oben rechts im Eigenschaftenfenster ). Suchen Sie "Aktiviert" , und geben Sie checkbox_Checked in das Textfeld ein, und suchen Sie dann "Deaktiviert ", und geben Sie checkbox_Unchecked in das Textfeld ein.

  7. Fügen Sie die Ereignishandler für das Kontrollkästchen hinzu:

    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. Erstellen Sie das Projekt, und starten Sie das Debugging.

  9. Öffnen Sie in der experimentellen Instanz das Fenster "MyToolWindow ".

    Suchen Sie im Eigenschaftenfenster nach den Eigenschaften des Fensters. Die IsChecked-Eigenschaft wird unten im Fenster unter der Kategorie "Meine Eigenschaften " angezeigt.

  10. Aktivieren Sie das Kontrollkästchen im MyToolWindow-Fenster . IsChecked in the Properties window changes to True. Deaktivieren Sie das Kontrollkästchen im Fenster "MyToolWindow ". IsChecked in the Properties window changes to False. Ändern Sie den Wert von IsChecked im Eigenschaftenfenster . Das Kontrollkästchen im Fenster "MyToolWindow " ändert sich entsprechend dem neuen Wert.

    Hinweis

    Wenn Sie ein Objekt löschen müssen, das im Eigenschaftenfenster angezeigt wird, rufen OnSelectChange Sie zuerst mit einem null Auswahlcontainer auf. Nachdem Sie die Eigenschaft oder das Objekt entfernt haben, können Sie zu einem Auswahlcontainer wechseln, der aktualisiert SelectableObjects wurde und SelectedObjects Listen enthält.

Ändern von Auswahllisten

In diesem Abschnitt fügen Sie eine Auswahlliste für eine einfache Eigenschaftsklasse hinzu und verwenden die Toolfensterschnittstelle, um auszuwählen, welche Auswahlliste angezeigt werden soll.

So ändern Sie Auswahllisten

  1. Öffnen Sie MyToolWindow.cs , und fügen Sie eine öffentliche Klasse mit dem Namen Simplehinzu.

    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. Fügen Sie der Klasse eine SimpleObject Eigenschaft sowie zwei Methoden hinzu, um die Auswahl des Eigenschaftenfensters zwischen dem Fensterbereich und dem Simple Objekt zu MyToolWindow wechseln.

    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. Ersetzen Sie in MyToolWindowControl.cs die Kontrollkästchenhandler durch die folgenden Codezeilen:

    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. Erstellen Sie das Projekt, und starten Sie das Debugging.

  5. Öffnen Sie in der experimentellen Instanz das Fenster "MyToolWindow ".

  6. Aktivieren Sie das Kontrollkästchen im MyToolWindow-Fenster . Im Eigenschaftenfenster werden die Simple Objekteigenschaften SomeText und ReadOnly angezeigt. Deaktivieren Sie das Kontrollkästchen. Die öffentlichen Eigenschaften des Fensters werden im Eigenschaftenfenster angezeigt.

    Hinweis

    Der Anzeigename von SomeText ist "Mein Text".

Bewährte Vorgehensweise

In dieser exemplarischen Vorgehensweise wird implementiert, ISelectionContainer sodass die auswählbare Objektsammlung und die ausgewählte Objektsammlung dieselbe Auflistung sind. Nur das ausgewählte Objekt wird in der Eigenschaftenbrowserliste angezeigt. Eine vollständigere ISelectionContainer-Implementierung finden Sie in den Referenz.ToolWindow-Beispielen.

Visual Studio-Toolfenster werden zwischen Visual Studio-Sitzungen beibehalten. Weitere Informationen zum Beibehalten des Toolfensterzustands finden Sie unter ProvideProfileAttribute.