Freigeben über


Exemplarische Vorgehensweise: Eigenschaften zum Fenster Eigenschaften verfügbar machen

In dieser exemplarischen Vorgehensweise macht die öffentlichen Eigenschaften eines Objekts in den Eigenschaften Fenster. Die Änderungen, die Sie vornehmen, werden diese Eigenschaften im Eigenschaften Fenster reflektiert.

Vorbereitungsmaßnahmen

Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie Visual Studio 2010 SDKinstallieren.

Hinweis

Weitere Informationen über das Visual Studio-SDK finden Sie unter Erweitern von Visual Studio Overview.Um herauszufinden finden Sie unter wie das Visual Studio-SDK, auf Visual Studio Extensibility Developer Center der MSDN-Website herunterlädt.

Speicherorte für die Visual Studio-Paket-Projektvorlage

Die Visual Studio-Paket importieren kann in drei verschiedenen Stellen im Dialogfeld Neues Projekt gefunden werden:

  1. Klicken Sie unter Von Visual Basic-Erweiterbarkeit. Die Standardsprache des Projekts ist Visual Basic.

  2. Die C#-Erweiterbarkeit. Die Standardsprache ist C# des Projekts.

  3. Verwenden anderer Projekttyp-Erweiterbarkeit. Die Standardsprache des Projekts ist C++.

Eigenschaften zum Fenster Eigenschaften verfügbar machen

In diesem Abschnitt erstellen Sie eine grundlegende Tool sichtverpackung und zeigen die öffentlichen Eigenschaften des zugeordneten Objekts Eigenschaften Fensterbereichs im Fenster angezeigt.

So legen Sie Eigenschaften im Eigenschaftenfenster verfügbar

  1. Erstellen Sie ein Visual Studio Paket Projekt mit dem Namen MyObjectProps.

    Weitere Informationen zum Erstellen eines verwalteten VSPackages finden Sie unter Exemplarische Vorgehensweise: Wenn Sie einen Menübefehl mit der Visual Studio-Paket-Vorlage erstellenerstellt.

  2. Wählen Sie auf der Seite Wählen Sie eine Programmiersprache aus.Visual C#. Sie können Visual Basic verwenden, um ein Paket zu erstellen, aber diese exemplarische Vorgehensweise verwendet Visual C#.

  3. Wählen Sie auf der Seite Optionen für das VSPackage auswählenToolfenster.

  4. Ändern Sie auf der Seite Optionen des ToolfenstersFenstername zu My-Objekt-Eigenschaften, und klicken Sie dann auf Fertig stellen.

    Die Vorlage erstellt das verwaltete Projekt, MyObjectProps.

  5. Öffnen Sie die Datei, MyToolWindow.cs, und fügen Sie die folgenden Felder der MyToolWindow-Klasse hinzu.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
  6. Fügen Sie folgenden Code in die MyToolWindow-Klasse hinzu.

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

    Die TrackSelection-Eigenschaft veranschaulicht GetService , zum Abrufen eines STrackSelection Dienst, der eine ITrackSelection-Schnittstelle bereitstellt. Der OnToolWindowCreated-Ereignishandler SelectList-Methode erstellen und die zusammen eine Liste ausgewählter Objekte, die nur das Tool fensterbereichs Objekt selbst enthält. Die UpdateSelection-Methode weist das Eigenschaften Fenster, um die öffentlichen Eigenschaften des Tools fensterbereichs anzuzeigen.

  7. Erstellen und Starten Sie das Projekt im Debugmodus, indem Sie F5 drücken. Dadurch wird Visual Studio Exp.

    Hinweis

    Zwei Versionen von Visual Studio sind jetzt geöffnet.

  8. Wenn das Eigenschaften Fenster nicht angezeigt wird, öffnen Sie es, indem Sie F4 drücken.

  9. In Visual Studio Exp, auf dem Ansicht Menü zu Weitere Fensterund klicken Sie dann auf Meine Objekteigenschaften.

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

  10. Klicken Sie in Projektmappen-Explorer. Die Eigenschaften im Fenster Eigenschaften werden. Klicken Sie auf das Meine Objekteigenschaften Fenster. Die Eigenschaften werden.

  11. Ändern Sie die Eigenschaft Beschriftung im Fenster Eigenschaften in Etwas anderes.

    Die My-Objekt-Eigenschaftenfenster Beschriftung entsprechend geändert.

Verfügbarmachen Tool-Fenster-Eigenschaften

In diesem Abschnitt fügen Sie ein Toolfenster und seine Eigenschaften verfügbar machen. Die Änderungen an den Eigenschaften vorgenommenen Eigenschaften werden im Fenster reflektiert.

So legen Sie Eigenschaften von Toolfenstern verfügbar machen

  1. Schließen Sie Visual Studio Exp.

  2. Öffnen Sie MyToolWindow.cs, und fügen Sie die public boolean-Eigenschaft IsChecked der MyToolWindow-Klasse hinzu.

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

    Diese Eigenschaft liest und schreibt seinen Zustand direkt vom WPF, das Sie in einem späteren Schritt erstellen.

  3. Im MyToolWindow-Konstruktor fügen Sie ein this dem Schlüsselwort MyControl-Konstruktor hinzu:

    control = New MyControl(Me)
    
    base.Content = new MyControl(this);
    
  4. Öffnen Sie die Datei, MyControl.xaml.cs, und ersetzen Sie den Konstruktor durch den folgenden Code.

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

    Dies gibt MyControl Zugriff auf den MyToolWindow Bereich.

  5. Änderung an der Entwurfsansicht.

  6. Löschen Sie das Button-Steuerelement. Fügen Sie ein Kontrollkästchen für Toolbox dem obere linke Ecke, hinzu.

  7. Doppelklicken Sie auf das Kontrollkästchen.

    Dadurch wird der checkBox1_Checked-Ereignishandler erstellt und öffnet sie im Code-Editor.

  8. Doppelklicken Sie im Eigenschaftenfenster auf den Ereignishandler checkBox1Nicht aktiviert .

    Dadurch wird der checkBox1_Unchecked-Ereignishandler erstellt und öffnet sie im Code-Editor.

  9. Ersetzen Sie die Kontrollkästchen Ereignishandler durch den folgenden Code.

    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. Erstellen und Starten Sie das Projekt im Debugmodus, indem Sie F5 drücken. Dadurch wird Visual Studio Exp.

  11. In Visual Studio Exp, auf dem Ansicht Menü zu Weitere Fensterund klicken Sie dann auf Meine Objekteigenschaften.

    Die öffentlichen Eigenschaften des Fensterbereichs werden im Fenster Eigenschaften . Die IsChecked-Eigenschaft wird unter der Kategorie, Meine Eigenschaften.

  12. Klicken Sie auf die IsChecked-Eigenschaft.

    Die Beschreibung MyControl-Eigenschaften wird am unteren Rand des Eigenschaften Fenster.

  13. Aktivieren Sie das Kontrollkästchen im My-Objekt-Eigenschaftenfenster aus. IsChecked Änderungen an True. Deaktivieren Sie das Kontrollkästchen. IsChecked Änderungen an False. Ändern Sie den Wert von IsChecked im Eigenschaften Fenster. Das Kontrollkästchen im My-Objekt-Eigenschaftenfenster ändert, um den neuen Wert übereinstimmt.

    Hinweis

    Wenn Sie eine Eigenschaft oder ein Objekt freigeben müssen, die sich im Eigenschaften Fenster angezeigt werden, rufen Sie OnSelectChange mit einem Auswahlcontainer null zuerst an.Nachdem Sie die Eigenschaft oder das Objekt freigegeben wurde, können Sie mit einem Auswahlcontainer ändern, der SelectableObjects und Listen SelectedObjects aktualisiert wurde.

Ändern Auswahl-Listen

In diesem Abschnitt fügen Sie eine Auswahlliste für eine einfache Eigenschaftenklasse hinzu und verwenden die Toolfenster Oberfläche zum Anzeigen auszuwählen, die die Auswahlliste.

So ändern Sie die Auswahl

  1. Schließen Sie Visual Studio Exp.

  2. Öffnen Sie MyToolWindow.cs oder MyToolWindow.vb, und fügen Sie die öffentliche Klasse, Simple, am Anfang der Datei direkt nach der Namespace Statement und dem Start- curlique Klammer hinzu.

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

    Ein Objekt vom Typ Simple hat die öffentlichen Zeichenfolgeneigenschaften, SomeTextund - ReadOnly.

  3. Fügen Sie diesen Code am Ende der MyToolWindow-Klasse direkt nach der IsChecked-Eigenschaft hinzu.

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

    Dadurch wird die Singletone Eigenschaft, SimpleObjectund zwei Methoden, um die Eigenschaften Fenster-Auswahl zwischen den Fensterbereich und das Simple-Objekt zu wechseln.

  4. Öffnen Sie MyControl.cs oder MyControl.vb in der Codeansicht. Ersetzen Sie die Kontrollkästchen für diese Codezeilen:

    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. Erstellen und Starten Sie das Projekt im Debugmodus, indem Sie F5 drücken.

    Dadurch wird Visual Studio Exp.

  6. In Visual Studio Exp, auf dem Ansicht Menü zu Weitere Fensterund klicken Sie dann auf Meine Objekteigenschaften.

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

  7. Aktivieren Sie das Kontrollkästchen im My-Objekt-Eigenschaftenfenster aus. Das Fenster zeigt die Simple-Objekt Eigenschaften-Eigenschaften und SomeTextReadOnlyan. Deaktivieren Sie das Kontrollkästchen. Die öffentlichen Eigenschaften des Fensterbereichs werden im Fenster Eigenschaften .

    Hinweis

    Der Anzeigename der Text ist Mein Text.

Prozedur

In dieser exemplarischen Vorgehensweise wird ISelectionContainer implementiert, damit die auswählbare Objektauflistung und die ausgewählte Objektauflistung dieselbe Auflistung befinden. Nur das ausgewählte Objekt wird in der Liste Eigenschaftenbrowser. Weitere Informationen finden ISelectionContainer-Implementierung vollständige, die Reference.ToolWindow-Beispiele.

Visual Studio-Toolfenster bleiben zwischen Visual Studio-Sitzungen. Weitere Informationen zum Beibehalten des Toolfensters zustandes finden Sie unter ProvideProfileAttribute.

Siehe auch

Konzepte

Unterstützung für den Eigenschaftenbrowser

Weitere Ressourcen

VSPackage-Zustand