Condividi tramite


procedura dettagliata: Esporre le proprietà nella Finestra Proprietà

In questa procedura dettagliata espone proprietà pubbliche di un oggetto nella finestra di Proprietà . Le modifiche apportate a queste proprietà vengono riflesse nella finestra di Proprietà .

Prerequisiti

Per completare questa procedura dettagliata, è necessario installare Visual Studio 2010 SDK.

Nota

per ulteriori informazioni su Visual Studio SDK, vedere Cenni preliminari sull'estensione di Visual Studio.Per ulteriori informazioni su come scaricare Visual Studio SDK, vedere Centro per sviluppatori di estensibilità di Visual Studio il sito Web MSDN.

Posizioni del modello di progetto del pacchetto Visual Studio

Il modello di progetto del pacchetto Visual Studio è disponibile in tre posizioni diverse nella finestra di dialogo di nuovo progetto :

  1. Sotto di estensibilità di Visual Basic. La lingua predefinita del progetto di Visual Basic.

  2. Sotto di estensibilità di c#. La lingua predefinita del progetto è c#.

  3. Nell'ambito dell'altra estensibilità dei tipi di progetto. La lingua predefinita del progetto è C++.

Esporre le proprietà nella Finestra Proprietà

In questa sezione, si crea un pacchetto di base della finestra degli strumenti e visualizzare le proprietà pubbliche dell'oggetto associato al riquadro della finestra di Proprietà .

Per esporre le proprietà nella Finestra Proprietà

  1. creare un pacchetto MyObjectPropsdenominato progetto di Visual Studio .

    per ulteriori informazioni su come creare un VSPackage gestito, vedere procedura dettagliata: Creazione di un comando di menu utilizzando il modello importa pacchetto Visual Studio.

  2. Nella pagina Selezionare un linguaggio di programmazione, impostare il linguaggio su Visual C# o Visual Basic. È possibile utilizzare Visual Basic per creare un pacchetto, ma utilizza Visual c# della procedura dettagliata.

  3. Nella pagina di Selezionare le opzioni di package VS , Finestra degli strumentiselezionato.

  4. Nella pagina di Opzioni della finestra degli strumenti , modificare Nome della finestra a Proprietà dell'oggetto Myquindi fare clic su - Fine.

    il modello crea il progetto gestito, MyObjectProps.

  5. Aprire il file, MyToolWindow.cs e aggiungere i campi seguenti alla classe di MyToolWindow .

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
  6. Aggiungere il codice seguente alla classe di 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 proprietà di TrackSelection utilizza GetService per ottenere un servizio di STrackSelection , che fornisce un'interfaccia di ITrackSelection . Il gestore eventi di OnToolWindowCreated e il metodo di SelectList creano insieme un elenco di oggetti selezionati che contiene solo l'oggetto stesso del riquadro della finestra degli strumenti. Il metodo di UpdateSelection indica alla finestra di Proprietà di visualizzare le proprietà pubbliche del riquadro della finestra degli strumenti.

  7. Compilare e avviare il progetto in modalità di debug premendo F5. Verrà avviata Visual Studio Esp.

    Nota

    due versioni di Visual Studio ora sono aperte.

  8. Se la finestra di Proprietà non è visibile, aprirlo premendo F4.

  9. In Visual Studio Esp, scegliere dal menu di visualizzazione , il punto a altre finestrequindi fare clic su Proprietà dell'oggetto My.

    Verrà aperta la finestra e le proprietà pubbliche del riquadro vengono visualizzati nella finestra di Proprietà .

  10. Scegliere in Esplora soluzioni. Le proprietà nella finestra di Proprietà scompaiono. Fare clic sulla finestra di Proprietà dell'oggetto My . Le proprietà utilizzati più volte.

  11. Modificare la proprietà di Barra del titolo nella finestra di Proprietà a Un altro.

    La barra del titolo della Finestra Proprietà dell'oggetto My viene modificato di conseguenza.

Esporre le proprietà della finestra degli strumenti

In questa sezione, si aggiunge una finestra degli strumenti e si espongono le proprietà. Le modifiche apportate alle proprietà vengono riflesse nella finestra di Proprietà .

Per esporre le proprietà della finestra degli strumenti

  1. Chiudere Visual Studio Esp.

  2. Aprire MyToolWindow.cs e aggiungere la proprietà IsChecked di public boolean alla classe di 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;
        }
    }
    

    Questa proprietà legge e scrive il relativo stato direttamente dalla casella di controllo che WPF creati in un passaggio successivo.

  3. Nel costruttore di MyToolWindow , aggiungere una parola chiave di this al costruttore di MyControl :

    control = New MyControl(Me)
    
    base.Content = new MyControl(this);
    
  4. Aprire il file, MyControl.xaml.cs e sostituire il costruttore tramite il codice seguente.

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

    Ciò fornisce l'accesso di MyControl al riquadro di MyToolWindow .

  5. Passare alla visualizzazione progettazione.

  6. eliminare il pulsante. Per aggiungere una casella di controllo da Casella degli strumenti angolo superiore e sinistro.

  7. Fare doppio clic sulla casella di controllo.

    Viene creato il gestore eventi di checkBox1_Checked e aperto nell'editor di codice.

  8. Nella Finestra Proprietà, fare doppio clic sul gestore eventi di checkBox1Non selezionato .

    Viene creato il gestore eventi di checkBox1_Unchecked e aperto nell'editor di codice.

  9. Sostituire i gestori eventi della casella di controllo tramite il codice seguente.

    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. Compilare e avviare il progetto in modalità di debug premendo F5. Verrà avviata Visual Studio Esp.

  11. In Visual Studio Esp, scegliere dal menu di visualizzazione , il punto a altre finestrequindi fare clic su Proprietà dell'oggetto My.

    Le proprietà pubbliche del riquadro vengono visualizzati nella finestra di Proprietà . La proprietà di IsChecked viene visualizzato sotto la categoria, Le mie proprietà.

  12. Fare clic sulla proprietà di IsChecked .

    La descrizione proprietà di MyControl verrà visualizzato nella parte inferiore della finestra di Proprietà .

  13. Selezionare la casella di controllo nella Finestra Proprietà dell'oggetto My. modifiche diIsChecked a True. Deselezionare la casella di controllo. modifiche diIsChecked a False. Modificare il valore di IsChecked nella finestra di Proprietà . La casella di controllo nella Finestra Proprietà dell'oggetto My in base al nuovo valore.

    Nota

    Se è necessario disporre di una proprietà o un oggetto visualizzato nella finestra di Proprietà , chiamata OnSelectChange con un contenitore a selezione di null per primo.Dopo avere eliminato la proprietà o di un oggetto, è possibile utilizzare un contenitore a selezione che ha aggiornato SelectableObjects ed elenchi di SelectedObjects .

modificare gli elenchi di selezione

In questa sezione, aggiungere un elenco di selezione per una classe di proprietà di base e utilizzare l'interfaccia della finestra degli strumenti per scegliere quali elenco di selezione da visualizzare.

Per modificare gli elenchi di selezione

  1. Chiudere Visual Studio Esp.

  2. Aprire MyToolWindow.cs o MyToolWindow.vb e aggiungere la classe pubblica, Simple, all'inizio del file, subito dopo la parentesi di curlique dell'istruzione e di apertura dello spazio dei nomi.

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

    Una pagina Opzioni è specificata da due identificatori.

  3. Aggiungere questo codice alla fine della classe di MyToolWindow , subito dopo la proprietà di 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);
    }
    

    In questo modo viene creata la proprietà singletona, SimpleObjecte due metodi per cambiare la selezione della finestra di Proprietà tra il riquadro e l'oggetto di Simple .

  4. Aprire MyControl.cs o MyControl.vb in visualizzazione codice. Sostituire i gestori della casella di controllo con queste righe di codice:

    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. Compilare e avviare il progetto in modalità di debug premendo F5.

    Verrà avviata Visual Studio Esp.

  6. In Visual Studio Esp, scegliere dal menu di visualizzazione , il punto a altre finestrequindi fare clic su Proprietà dell'oggetto My.

    Verrà aperta la finestra e le proprietà pubbliche del riquadro vengono visualizzati nella finestra di Proprietà .

  7. Selezionare la casella di controllo nella Finestra Proprietà dell'oggetto My. La finestra di Proprietà visualizzare le proprietà, SomeText e In sola letturadell'oggetto di Simple . Deselezionare la casella di controllo. Le proprietà pubbliche del riquadro vengono visualizzati nella finestra di Proprietà .

    Nota

    il nome visualizzato di Testo a è Il formato testo.

procedura consigliata

In questa procedura dettagliata, ISelectionContainer viene implementato in modo che la raccolta selezionabile dell'oggetto e la raccolta dell'oggetto sono la stessa raccolta. Solo l'oggetto selezionato verrà visualizzato nel Visualizzatore proprietà. Per un più l'implementazione completa di ISelectionContainer, vedere gli esempi di Reference.ToolWindow.

Le finestre degli strumenti di Visual Studio sono persistenti tra le sessioni di Visual Studio. Per ulteriori informazioni su come conservare lo stato della finestra degli strumenti, vedere ProvideProfileAttribute.

Vedere anche

Concetti

Il supporto di per il Visualizzatore proprietà

Altre risorse

Stato di un VSPackage