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:
Klicken Sie unter Von Visual Basic-Erweiterbarkeit. Die Standardsprache des Projekts ist Visual Basic.
Die C#-Erweiterbarkeit. Die Standardsprache ist C# des Projekts.
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
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.
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#.
Wählen Sie auf der Seite Optionen für das VSPackage auswählenToolfenster.
Ä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.
Öffnen Sie die Datei, MyToolWindow.cs, und fügen Sie die folgenden Felder der MyToolWindow-Klasse hinzu.
private ITrackSelection trackSel; private SelectionContainer selContainer;
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.
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.
Wenn das Eigenschaften Fenster nicht angezeigt wird, öffnen Sie es, indem Sie F4 drücken.
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 .
Klicken Sie in Projektmappen-Explorer. Die Eigenschaften im Fenster Eigenschaften werden. Klicken Sie auf das Meine Objekteigenschaften Fenster. Die Eigenschaften werden.
Ä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
Schließen Sie Visual Studio Exp.
Ö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.
Im MyToolWindow-Konstruktor fügen Sie ein this dem Schlüsselwort MyControl-Konstruktor hinzu:
control = New MyControl(Me)
base.Content = new MyControl(this);
Ö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.
Änderung an der Entwurfsansicht.
Löschen Sie das Button-Steuerelement. Fügen Sie ein Kontrollkästchen für Toolbox dem obere linke Ecke, hinzu.
Doppelklicken Sie auf das Kontrollkästchen.
Dadurch wird der checkBox1_Checked-Ereignishandler erstellt und öffnet sie im Code-Editor.
Doppelklicken Sie im Eigenschaftenfenster auf den Ereignishandler checkBox1Nicht aktiviert .
Dadurch wird der checkBox1_Unchecked-Ereignishandler erstellt und öffnet sie im Code-Editor.
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(); }
Erstellen und Starten Sie das Projekt im Debugmodus, indem Sie F5 drücken. Dadurch wird Visual Studio Exp.
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.
Klicken Sie auf die IsChecked-Eigenschaft.
Die Beschreibung MyControl-Eigenschaften wird am unteren Rand des Eigenschaften Fenster.
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
Schließen Sie Visual Studio Exp.
Ö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.
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.
Ö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(); }
Erstellen und Starten Sie das Projekt im Debugmodus, indem Sie F5 drücken.
Dadurch wird Visual Studio Exp.
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 .
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