Пошаговое руководство: Предоставление доступа к свойствам в окно свойств
Это пошаговое руководство обеспечивает открытых свойств объекта в Свойства окна. Отражены изменения, сделанные к этим свойствам в Свойства окна.
Обязательные компоненты
Чтобы выполнить это пошаговое руководство, необходимо устанавливать SDK для Visual Studio 2010.
Примечание
Дополнительные сведения о пакете SDK для Visual Studio см. в разделе интеграция SDK Visual Studio.Чтобы узнать, как загрузить пакет SDK для Visual Studio см. в разделе Центр разработчиков расширяемости Visual Studio на веб-сайте MSDN.
Расположения для шаблона проекта пакета Visual Studio
Шаблон проекта пакета Visual Studio могут находиться в разных местах в 3 Создать проект диалоговое окно:
Под моделью расширяемости Visual Basic. Язык по умолчанию для проекта Visual Basic.
Под расширяемостью c#. Язык по умолчанию для проекта c#.
Под другой моделью расширяемости типов проектов. Язык по умолчанию для проекта C++.
Предоставление доступа к свойствам в окне свойств
В этом разделе рассматривается, как создать базовый пакет окна инструментов и открытые свойства соответствующего объекта в области окна Свойства окна.
Предоставление доступа к свойствам в окне свойств
Create a Visual Studio Проект пакета MyObjectProps.
Дополнительные сведения о создании управляемого VSPackage см. в разделе Пошаговое руководство: Создание команды меню ресурсов с помощью шаблона пакета Visual Studio.
На Выбрать язык программирования выберите страницу Visual c#. Можно использовать Visual Basic создание пакета, но в этом пошаговом руководстве используется Visual c#.
На Выберите параметры пакета VSPackage выберите страницу Окно инструментов.
На Параметры окна инструментов страница, изменяет Имя окна В свойства Мои объекты, а затем нажмите кнопку Готово.
Шаблон проекта создает управляемый MyObjectProps.
Откройте файл MyToolWindow.cs и добавьте следующие поля MyToolWindow класс.
private ITrackSelection trackSel; private SelectionContainer selContainer;
Добавьте следующий код в класс 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 метод сообщает Свойства окно для отображения открытых свойств области окна инструментов.
Постройте и запустите проект в режиме отладки, нажав клавишу F5. Это запуске Visual Studio Exp.
Примечание
Версии 2 Visual Studio открыть.
Если Свойства окно не отображается, открыть его, нажав клавишу F4.
IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.
Открытие окна и открытые свойства отображаются в области окна Свойства окна.
Щелкните в пределах Обозреватель решений. Свойства Свойства окно исчезает. Щелкните свойства Мои объекты окна. Свойства еще раз.
Изменение подпись свойство Свойства окно Что-то другое.
Заголовок окна свойства папки Мои объекты соответствующим образом изменяется.
Предоставление доступа к свойствам окна инструментов
На этом шаге добавляется которому предоставляется окно инструментов и его свойства. Отражены изменения, внесенные в свойства в Свойства окна.
Предоставление доступа к свойствам окна инструментов
Завершить работу Visual Studio Exp.
Откройте 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, созданного в более позднем шаге.
в MyToolWindow конструктор добавляет a this ключевое слово к MyControl конструктор:
control = New MyControl(Me)
base.Content = new MyControl(this);
Откройте файл 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 панель.
Изменение в представление конструирования.
Удалите элемент управления " Кнопка ". Добавьте флажок из Панель элементов к верхнему, левый угол.
Дважды щелкните флажок.
Это приведет к созданию checkBox1_Checked обработчик событий и открытые в редакторе кода.
В окне свойства щелкните дважды checkBox1не установлен обработчик событий.
Это приведет к созданию checkBox1_Unchecked обработчик событий и открытые в редакторе кода.
Замените обработчики событий " флажок " с помощью следующего кода.
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(); }
Постройте и запустите проект в режиме отладки, нажав клавишу F5. Это запуске Visual Studio Exp.
IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.
Открытые свойства отображаются в области окна Свойства окна. IsChecked появится в категории, свойство мои свойства.
Щелкните IsChecked свойство.
Описание свойства MyControl появляется снизу Свойства окна.
В окне свойства установите флажок Мои объекты. IsChecked изменения True. Снимите флажок. IsChecked изменения False. Измените значение IsChecked в Свойства окна. Флажок в окне свойств Мои объекты изменяется таким образом, чтобы оно соответствовало новому значению.
Примечание
Если необходимо удалить свойства или объекта, отображаемых в Свойства окно, вызов OnSelectChange с null первый контейнер выделения.После удаления или свойство объекта можно изменять в контейнер выделения, который обновил SelectableObjects и SelectedObjects списки.
Изменение списки выбора
В этом разделе, можно добавить список выбора для свойства базового класса и использовать интерфейс окна инструментов, чтобы выбрать, список выбора для отображения.
Изменение списки выбора
Завершить работу Visual Studio Exp.
Откройте 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.
Добавьте следующий код в конец 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 объект.
Откройте 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(); }
Постройте и запустите проект в режиме отладки, нажав клавишу F5.
Это запуске Visual Studio Exp.
IN Visual Studio Exp, на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку свойства Мои объекты.
Открытие окна и открытые свойства отображаются в области окна Свойства окна.
В окне свойства установите флажок Мои объекты. Свойства окно отображает Simple свойства объекта SomeText и только для чтения. Снимите флажок. Открытые свойства отображаются в области окна Свойства окна.
Примечание
Отображаемое имя небольшой текст существует мой текст.
Рекомендации
В этом пошаговом руководстве ISelectionContainer реализует таким образом, что дискретная коллекция объектов и коллекция выбранного объекта будет один и тот же коллекцией. Только выбранный объект отображается в списке обозревателя свойств. Для полной реализации ISelectionContainer см. в разделе samples Reference.ToolWindow.
Окно инструментов Visual Studio сохраняются между сеансами Visual Studio. Дополнительные сведения о сохранения состояния окна инструментов, см. в разделе ProvideProfileAttribute.
См. также
Основные понятия
поддержка для обозревателя свойств