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


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

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

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

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

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

  1. Каждое расширение Visual Studio начинается с проекта развертывания VSIX, который будет содержать ресурсы расширения. Создайте проект VISUAL Studio VSIX с именем MyObjectPropertiesExtension. Шаблон проекта VSIX можно найти в диалоговом окне "Новый проект ", выполнив поиск vsix.

  2. Добавьте окно инструментов, добавив шаблон элемента пользовательского окна инструментов с именем MyToolWindow. Щелкните правой кнопкой мыши узел проекта в Обозревателе решений, а затем выберите Добавить>Новый элемент. В диалоговом окне "Добавление нового элемента" перейдите к расширяемости элементов>Visual C# и выберите "Пользовательское окно инструментов". В поле "Имя" в нижней части диалогового окна измените имя файла на MyToolWindow.cs. Дополнительные сведения о создании настраиваемого окна инструментов см. в разделе "Создание расширения с помощью окна инструментов".

  3. Откройте MyToolWindow.cs и добавьте следующую инструкцию using:

    using System.Collections;
    using System.ComponentModel;
    using Microsoft.VisualStudio.Shell.Interop;
    
  4. Теперь добавьте следующие поля в MyToolWindow класс.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
    
  5. Добавьте в класс MyToolWindow приведенный далее код.

    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 сообщает окну "Свойства ", чтобы отобразить общедоступные свойства панели окна инструментов.

  6. Выполните сборку решения и запустите отладку. Должен появиться экспериментальный экземпляр Visual Studio.

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

  8. Откройте окно MyToolWindow. Его можно найти в представлении>других окон.

    Откроется окно, а общедоступные свойства панели окон отображаются в окне "Свойства ".

  9. Измените свойство "Заголовок" в окне "Свойства" на "Мои свойства объекта".

    Окно MyToolWindow подпись соответствующим образом изменяется.

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

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

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

  1. Откройте MyToolWindow.cs и добавьте в класс общедоступное MyToolWindow логическое свойство IsChecked.

    [Category("My Properties")]
    [Description("MyToolWindowControl properties")]
    public bool IsChecked
    {
        get {
            if (base.Content == null)  return false;
            return (bool)(( MyToolWindowControl) base.Content).checkBox.IsChecked;
        }
        set {
            ((MyToolWindowControl) base.Content).checkBox.IsChecked = value;
        }
    }
    

    Это свойство получает состояние из проверка box WPF, которое будет создано позже.

  2. Откройте MyToolWindowControl.xaml.cs и замените конструктор MyToolWindowControl следующим кодом.

    private MyToolWindow pane;
    public MyToolWindowControl(MyToolWindow pane)
    {
        InitializeComponent();
        this.pane = pane;
        checkBox.IsChecked = false;
    }
    

    Это дает MyToolWindowControl доступ к MyToolWindow области.

  3. В MyToolWindow.cs измените MyToolWindow конструктор следующим образом:

    base.Content = new MyToolWindowControl(this);
    
  4. Перейдите в представление конструктора MyToolWindowControl.

  5. Удалите кнопку и добавьте поле проверка из панели элементов в левый верхний угол.

  6. Добавьте события Checked и Un проверка ed. Выберите проверка box в представлении конструктора. В окне "Свойства" нажмите кнопку обработчиков событий (в правом верхнем углу окна "Свойства"). Найдите флажок и введите проверкаbox_Checked в текстовом поле, а затем найдите un проверка ed и введите проверкаbox_Unпроверка в текстовом поле.

  7. Добавьте обработчики событий проверка поля:

    private void checkbox_Checked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = true;
        pane.UpdateSelection();
    }
    private void checkbox_Unchecked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = false;
        pane.UpdateSelection();
    }
    
  8. Выполните сборку решения и запустите отладку.

  9. В экспериментальном экземпляре откройте окно MyToolWindow .

    Найдите свойства окна в окне "Свойства ". Свойство IsChecked отображается в нижней части окна в категории "Мои свойства ".

  10. Установите флажок проверка в окне MyToolWindow. IsChecked в окне свойств изменяется на True. Снимите поле проверка в окне MyToolWindow. IsChecked в окне свойств изменяется на False. Измените значение IsChecked в окне "Свойства ". Поле проверка в окне MyToolWindow изменяется в соответствии с новым значением.

    Примечание.

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

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

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

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

  1. Откройте MyToolWindow.cs и добавьте открытый класс с именем Simple.

    public class Simple
    {
        private string someText = "";
    
        [Category("My Properties")]
        [Description("Simple Properties")]
        [DisplayName("My Text")]
        public string SomeText
        {
            get { return someText; }
            set { someText = value; }
        }
    
        [Category("My Properties")]
        [Description("Read-only property")]
        public bool ReadOnly
        {
            get { return false; }
        }
    }
    
  2. SimpleObject Добавьте свойство в MyToolWindow класс, а также два метода для переключения выбора окна свойств между областью окна и Simple объектом.

    private Simple simpleObject = null;
    public Simple SimpleObject
    {
        get
        {
            if (simpleObject == null) simpleObject = new Simple();
            return simpleObject;
        }
    }
    
    public void SelectSimpleList()
    {
        ArrayList listObjects = new ArrayList();
        listObjects.Add(SimpleObject);
        SelectList(listObjects);
    }
    
    public void SelectThisList()
    {
        ArrayList listObjects = new ArrayList();
        listObjects.Add(this);
        SelectList(listObjects);
    }
    
  3. В MyToolWindowControl.cs замените обработчики поля проверка следующими строками кода:

    private void checkbox_Checked(object sender, RoutedEventArgs e)
     {
        pane.IsChecked = true;
        pane.SelectSimpleList();
        pane.UpdateSelection();
    }
    private void checkbox_Unchecked(object sender, RoutedEventArgs e)
    {
        pane.IsChecked = false;
        pane.SelectThisList();
        pane.UpdateSelection();
    }
    
  4. Выполните сборку решения и запустите отладку.

  5. В экспериментальном экземпляре откройте окно MyToolWindow .

  6. Выберите поле проверка в окне MyToolWindow. В окне "Свойства" отображаются Simple свойства объекта, SomeText и ReadOnly. Снимите флажок. Общедоступные свойства окна отображаются в окне "Свойства ".

    Примечание.

    Отображаемое имя SomeText"Мой текст".

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

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

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