Поделиться через


Пошаговое руководство: Предоставление доступа к свойствам в окно свойств

Это пошаговое руководство обеспечивает открытых свойств объекта в Свойства окна. Отражены изменения, сделанные к этим свойствам в Свойства окна.

Обязательные компоненты

Чтобы выполнить это пошаговое руководство, необходимо устанавливать SDK для Visual Studio 2010.

Примечание

Дополнительные сведения о пакете SDK для Visual Studio см. в разделе интеграция SDK Visual Studio.Чтобы узнать, как загрузить пакет SDK для Visual Studio см. в разделе Центр разработчиков расширяемости Visual Studio на веб-сайте MSDN.

Расположения для шаблона проекта пакета Visual Studio

Шаблон проекта пакета Visual Studio могут находиться в разных местах в 3 Создать проект диалоговое окно:

  1. Под моделью расширяемости Visual Basic. Язык по умолчанию для проекта Visual Basic.

  2. Под расширяемостью c#. Язык по умолчанию для проекта c#.

  3. Под другой моделью расширяемости типов проектов. Язык по умолчанию для проекта C++.

Предоставление доступа к свойствам в окне свойств

В этом разделе рассматривается, как создать базовый пакет окна инструментов и открытые свойства соответствующего объекта в области окна Свойства окна.

Предоставление доступа к свойствам в окне свойств

  1. Create a Visual Studio Проект пакета MyObjectProps.

    Дополнительные сведения о создании управляемого VSPackage см. в разделе Пошаговое руководство: Создание команды меню ресурсов с помощью шаблона пакета Visual Studio.

  2. На Выбрать язык программирования выберите страницу Visual c#. Можно использовать Visual Basic создание пакета, но в этом пошаговом руководстве используется Visual c#.

  3. На Выберите параметры пакета VSPackage выберите страницу Окно инструментов.

  4. На Параметры окна инструментов страница, изменяет Имя окна В свойства Мои объекты, а затем нажмите кнопку Готово.

    Шаблон проекта создает управляемый MyObjectProps.

  5. Откройте файл MyToolWindow.cs и добавьте следующие поля MyToolWindow класс.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
  6. Добавьте следующий код в класс 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);
    }
    

    TrackSelection свойство использует GetService доступ STrackSelection служба, которая обеспечивает ITrackSelection интерфейс. OnToolWindowCreated обработчик событий и SelectList метод совместно создает список выбранных объектов, содержащих только сам объект области окна инструментов. UpdateSelection метод сообщает Свойства окно для отображения открытых свойств области окна инструментов.

  7. Постройте и запустите проект в режиме отладки, нажав клавишу F5. Это запуске Visual Studio Exp.

    Примечание

    Версии 2 Visual Studio открыть.

  8. Если Свойства окно не отображается, открыть его, нажав клавишу F4.

  9. IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.

    Открытие окна и открытые свойства отображаются в области окна Свойства окна.

  10. Щелкните в пределах Обозреватель решений. Свойства Свойства окно исчезает. Щелкните свойства Мои объекты окна. Свойства еще раз.

  11. Изменение подпись свойство Свойства окно Что-то другое.

    Заголовок окна свойства папки Мои объекты соответствующим образом изменяется.

Предоставление доступа к свойствам окна инструментов

На этом шаге добавляется которому предоставляется окно инструментов и его свойства. Отражены изменения, внесенные в свойства в Свойства окна.

Предоставление доступа к свойствам окна инструментов

  1. Завершить работу Visual Studio Exp.

  2. Откройте MyToolWindow.cs и добавьте public boolean свойство IsChecked к классу 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;
        }
    }
    

    Это свойство считывает и записывает ее состояние непосредственно из флажков WPF, созданного в более позднем шаге.

  3. в MyToolWindow конструктор добавляет a this ключевое слово к MyControl конструктор:

    control = New MyControl(Me)
    
    base.Content = new MyControl(this);
    
  4. Откройте файл MyControl.xaml.cs и замените конструктор с помощью следующего кода.

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

    Это обеспечивает MyControl доступ к MyToolWindow панель.

  5. Изменение в представление конструирования.

  6. Удалите элемент управления " Кнопка ". Добавьте флажок из Панель элементов к верхнему, левый угол.

  7. Дважды щелкните флажок.

    Это приведет к созданию checkBox1_Checked обработчик событий и открытые в редакторе кода.

  8. В окне свойства щелкните дважды checkBox1не установлен обработчик событий.

    Это приведет к созданию checkBox1_Unchecked обработчик событий и открытые в редакторе кода.

  9. Замените обработчики событий " флажок " с помощью следующего кода.

    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. Постройте и запустите проект в режиме отладки, нажав клавишу F5. Это запуске Visual Studio Exp.

  11. IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.

    Открытые свойства отображаются в области окна Свойства окна. IsChecked появится в категории, свойство мои свойства.

  12. Щелкните IsChecked свойство.

    Описание свойства MyControl появляется снизу Свойства окна.

  13. В окне свойства установите флажок Мои объекты. IsChecked изменения True. Снимите флажок. IsChecked изменения False. Измените значение IsChecked в Свойства окна. Флажок в окне свойств Мои объекты изменяется таким образом, чтобы оно соответствовало новому значению.

    Примечание

    Если необходимо удалить свойства или объекта, отображаемых в Свойства окно, вызов OnSelectChange с null первый контейнер выделения.После удаления или свойство объекта можно изменять в контейнер выделения, который обновил SelectableObjects и SelectedObjects списки.

Изменение списки выбора

В этом разделе, можно добавить список выбора для свойства базового класса и использовать интерфейс окна инструментов, чтобы выбрать, список выбора для отображения.

Изменение списки выбора

  1. Завершить работу Visual Studio Exp.

  2. Откройте MyToolWindow.cs или MyToolWindow.vb и добавьте открытый класс Simpleв начало файла, непосредственно после выписки пространства имен и брекета curlique открытия.

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

    Объект типа Simple содержит общие строковые свойства SomeTextи ReadOnly.

  3. Добавьте следующий код в конец MyToolWindow класс непосредственно после свойства 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);
    }
    

    При этом создается свойство одноэлементной SimpleObjectи 2 метода для переключения Свойства выделение между специализированной части окна и окна Simple объект.

  4. Откройте MyControl.cs или MyControl.vb в представлении кода. Замените обработчики флажка с этими строками кода:

    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. Постройте и запустите проект в режиме отладки, нажав клавишу F5.

    Это запуске Visual Studio Exp.

  6. IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.

    Открытие окна и открытые свойства отображаются в области окна Свойства окна.

  7. В окне свойства установите флажок Мои объекты. Свойства окно отображает Simple свойства объекта SomeText и только для чтения. Снимите флажок. Открытые свойства отображаются в области окна Свойства окна.

    Примечание

    Отображаемое имя небольшой текст существует мой текст.

Рекомендации

В этом пошаговом руководстве ISelectionContainer реализует таким образом, что дискретная коллекция объектов и коллекция выбранного объекта будет один и тот же коллекцией. Только выбранный объект отображается в списке обозревателя свойств. Для полной реализации ISelectionContainer см. в разделе samples Reference.ToolWindow.

Окно инструментов Visual Studio сохраняются между сеансами Visual Studio. Дополнительные сведения о сохранения состояния окна инструментов, см. в разделе ProvideProfileAttribute.

См. также

Основные понятия

поддержка для обозревателя свойств

Другие ресурсы

состояние VSPackage