Compartilhar via


Passo a passo: Expor propriedades na janela de propriedades

Esta explicação passo a passo expõe as propriedades públicas de um objeto para o Propriedades janela. As alterações feitas a essas propriedades são refletidas no Propriedades janela.

Pré-requisitos

Para concluir este passo a passo, você deve instalar o SDL do Visual Studio 2010.

Dica

Para obter mais informações sobre o SDK de Visual Studio, consulte Ampliando a visão geral de Visual Studio.Para descobrir como fazer o download do SDK do Visual Studio, consulte Visual Studio extensibilidade Developer Center no site do MSDN.

Locais para o modelo de projeto de pacote de Visual Studio

O modelo de projeto do pacote de Visual Studio pode ser encontrado em três locais diferentes de Novo projeto caixa de diálogo:

  1. Em Visual Basic extensibilidade. O idioma padrão do projeto é Visual Basic.

  2. Em C# extensibilidade. O idioma padrão do projeto é C#.

  3. Em outra extensibilidade de tipos de projeto. O idioma padrão do projeto é C++.

Expor propriedades na janela de propriedades

Nesta seção, você pode criar um pacote de janela de ferramenta básica e exibir as propriedades públicas do objeto do painel de janela associada no Propriedades janela.

Expor propriedades na janela de propriedades

  1. Criar um Visual Studio o projeto do pacote chamado MyObjectProps.

    Para obter mais informações sobre como criar um VSPackage gerenciado, consulte Passo a passo: Criando um comando de Menu usando o modelo de pacote de Visual Studio.

  2. Sobre o Select a Programming Language , selecione Visual C#. Você pode usar Visual Basic para criar um pacote, mas este passo a passo usa Visual C#.

  3. Sobre o Selecionar opções de VSPackage , selecione Janela da ferramenta.

  4. Sobre o Opções da janela de ferramenta página, alterar o Nome da janela para Propriedades do objeto Mye, em seguida, clique em Concluir.

    O modelo cria um projeto gerenciado, MyObjectProps.

  5. Abra o arquivo, MyToolWindow.cs, e adicione os seguintes campos para o MyToolWindow classe.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
  6. Adicione o seguinte código à classe 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);
    }
    

    O TrackSelection propriedade usa GetService para obter um STrackSelection serviço, que fornece um ITrackSelection interface. O OnToolWindowCreated manipulador de eventos e SelectList método juntas criam uma lista de objetos selecionados que contém apenas o ferramenta janela Painel próprio objeto. O UpdateSelection método informa a Propriedades janela para exibir as propriedades públicas do painel de janela de ferramentas.

  7. Criar e iniciar o projeto no modo de depuração pressionando F5. Isso inicia Visual Studio Exp.

    Dica

    Duas versões do Visual Studio agora estão abertos.

  8. Se o Propriedades janela não estiver visível, abra-o pressionando F4.

  9. No Visual Studio Exp diante do Exibir , aponte para Other Windowse, em seguida, clique em Propriedades do objeto My.

    A janela é aberta e as propriedades públicas do painel de janela aparecerá na Propriedades janela.

  10. Clique na Solution Explorer. As propriedades a Propriedades janela desaparecem. Clique no Propriedades do objeto My janela. As propriedades reaparecem.

  11. Alterar o legenda propriedade no Propriedades janela para Else algo.

    A legenda da janela de propriedades do meu objeto é alterada de acordo.

Expor propriedades da janela de ferramenta

Nesta seção, você pode adicionar uma janela de ferramenta e expor suas propriedades. As alterações feitas às propriedades são refletidas no Propriedades janela.

Expor propriedades da janela de ferramenta

  1. Fechar Visual Studio Exp.

  2. Abra MyToolWindow.cs e adicione o public boolean propriedade IsChecked para a classe 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;
        }
    }
    

    Esta propriedade lê e grava o seu estado diretamente a partir da caixa de seleção do WPF que é criar em uma etapa posterior.

  3. No MyToolWindow construtor, adicionar um this palavra-chave para o MyControl construtor:

    control = New MyControl(Me)
    
    base.Content = new MyControl(this);
    
  4. Abra o arquivo, MyControl.xaml.cs e substitua o construtor, usando o código a seguir.

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

    Isso permite que MyControl de acesso para o MyToolWindow painel.

  5. Altere para o modo Design.

  6. Exclua o controle de botão. Adicionar uma caixa de seleção do caixa de ferramentas para a superior, canto esquerdo.

  7. Clique duas vezes na caixa de seleção.

    Isso cria o checkBox1_Checked manipulador de eventos e o abre no editor de código.

  8. Na janela Properties, clique duas vezes o checkBox1desmarcado manipulador de eventos.

    Isso cria o checkBox1_Unchecked manipulador de eventos e o abre no editor de código.

  9. Substitua os manipuladores de eventos da caixa de seleção usando o código a seguir.

    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. Criar e iniciar o projeto no modo de depuração pressionando F5. Isso inicia Visual Studio Exp.

  11. No Visual Studio Exp diante do Exibir , aponte para Other Windowse, em seguida, clique em Propriedades do objeto My.

    As propriedades públicas do painel da janela de constar o Propriedades janela. O IsChecked propriedade aparece na categoria, Propriedades de Meus.

  12. Clique no IsChecked propriedade.

    A descrição Propriedades MeuControle aparece na parte inferior do Propriedades janela.

  13. Marque a caixa de seleção na janela Propriedades do objeto My. IsChecked é alterado para True. Desmarque a caixa de seleção. IsChecked é alterado para False. Alterar o valor de IsChecked na Propriedades janela. A caixa de seleção na janela Propriedades do objeto My é alterado para coincidir com o novo valor.

    Dica

    Se você deve dispor de uma propriedade ou objeto exibido na Propriedades janela, chamada OnSelectChange com um null contêiner de seleção primeiro.Após o descarte o objeto ou propriedade, você pode alterar para um contêiner de seleção que atualizou SelectableObjects e SelectedObjects lista.

A alteração de listas de seleção

Nesta seção, você pode adiciona uma lista de seleção para uma classe básica de propriedade e use a interface da janela de ferramenta para escolher qual lista de seleção para exibir.

Para alterar as listas de seleção

  1. Fechar Visual Studio Exp.

  2. Abra MyToolWindow.cs ou MyToolWindow.vb e, em seguida, adicione a classe pública, Simple, até o início do arquivo, logo após a declaração de namespace e a curlique colchete de abertura.

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

    Um objeto do tipo Simple com as propriedades públicas de seqüência de caracteres, SomeText, e ReadOnly.

  3. Adicione este código ao final da MyToolWindow classe, logo após a propriedade 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);
    }
    

    Isso cria a propriedade singleton, SimpleObjecte dois métodos para alternar a Propriedades entre o painel da janela de seleção de janela e o Simple objeto.

  4. Abra o MyControl.cs ou MyControl.vb no modo de exibição de código. Substitua os manipuladores de caixa de seleção com estas linhas de código:

    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. Criar e iniciar o projeto no modo de depuração pressionando F5.

    Isso inicia Visual Studio Exp.

  6. No Visual Studio Exp diante do Exibir , aponte para Other Windowse, em seguida, clique em Propriedades do objeto My.

    A janela é aberta e as propriedades públicas do painel de janela aparecerá na Propriedades janela.

  7. Marque a caixa de seleção na janela Propriedades do objeto My. O Propriedades janela exibe o Simple propriedades, do objeto SomeText e somente leitura. Desmarque a caixa de seleção. As propriedades públicas do painel da janela de constar o Propriedades janela.

    Dica

    O nome de exibição de Alguns texto é Texto da minha.

Prática recomendada

Nesta explicação, ISelectionContainer é implementado para que a coleção de objetos podem ser selecionados e a coleção de objeto selecionado são a mesma coleção. Somente o objeto selecionado aparece na lista de navegadores de propriedade. Para uma implementação de ISelectionContainer mais completa, consulte os exemplos de Reference.ToolWindow.

Janelas de ferramentas Visual Studio persistem entre sessões de Visual Studio. Para obter mais informações sobre a conservação do estado da janela de ferramenta, consulte ProvideProfileAttribute.

Consulte também

Conceitos

Suporte para o Pesquisador de propriedade

Outros recursos

Estado VSPackage