Dela via


Exponera egenskaper i fönstret Egenskaper

Den här genomgången visar de offentliga egenskaperna för ett objekt i fönstret Egenskaper . De ändringar du gör i de här egenskaperna återspeglas i fönstret Egenskaper .

Exponera egenskaper i fönstret Egenskaper

I det här avsnittet skapar du ett anpassat verktygsfönster och visar de offentliga egenskaperna för det associerade fönsterfönstrets objekt i fönstret Egenskaper .

Så här exponerar du egenskaper för fönstret Egenskaper

  1. Varje Visual Studio-tillägg börjar med ett VSIX-distributionsprojekt som innehåller tilläggstillgångarna. Skapa ett Visual Studio VSIX-projekt med namnet MyObjectPropertiesExtension. Du hittar VSIX-projektmallen i dialogrutan Nytt projekt genom att söka efter "vsix".

  2. Lägg till ett verktygsfönster genom att lägga till en mall för anpassat verktygsfönster med namnet MyToolWindow. Högerklicka på projektnoden i Solution Exploreroch välj Lägg till>nytt objekt. I dialogrutan Lägg till nytt objekt går du till Visual C#-objekt>Utökningsbarhet och väljer Fönstret Anpassat verktyg. I fältet Namn längst ned i dialogrutan ändrar du filnamnet till MyToolWindow.cs. Mer information om hur du skapar ett anpassat verktygsfönster finns i Skapa ett tillägg med ett verktygsfönster.

  3. Öppna MyToolWindow.cs och lägg till följande med hjälp av -instruktionen:

    using System.Collections;
    using System.ComponentModel;
    using Microsoft.VisualStudio.Shell.Interop;
    
  4. Lägg nu till följande fält i MyToolWindow klassen.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
    
  5. Lägg till följande kod i MyToolWindow klassen.

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

    Egenskapen TrackSelection använder GetService för att hämta en STrackSelection tjänst som tillhandahåller ett ITrackSelection gränssnitt. Händelsehanteraren OnToolWindowCreated och SelectList metoden skapar tillsammans en lista över markerade objekt som endast innehåller själva verktygsfönstrets objekt. Metoden UpdateSelection instruerar fönstret Egenskaper att visa de offentliga egenskaperna för verktygsfönstret.

  6. Skapa projektet och börja felsöka. Den experimentella instansen av Visual Studio bör visas.

  7. Om fönstret Egenskaper inte visas öppnar du det genom att trycka på F4.

  8. Öppna fönstret MyToolWindow . Du hittar den i Visa>andra Fönster.

    Fönstret öppnas och de offentliga egenskaperna för fönsterfönstret visas i fönstret Egenskaper .

  9. Ändra egenskapen Bildtext i fönstret Egenskaper till Mina objektegenskaper.

    Fönsterrubriken MyToolWindow ändras i enlighet med detta.

Visa egenskaper för verktygsfönster

I det här avsnittet lägger du till ett verktygsfönster och exponerar dess egenskaper. De ändringar du gör i egenskaper återspeglas i fönstret Egenskaper .

Så här exponerar du egenskaper för verktygsfönster

  1. Öppna MyToolWindow.cs och lägg till den offentliga booleska egenskapen IsChecked i MyToolWindow klassen.

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

    Den här egenskapen hämtar sitt tillstånd från kryssrutan WPF som du skapar senare.

  2. Öppna MyToolWindowControl.xaml.cs och ersätt konstruktorn MyToolWindowControl med följande kod.

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

    Detta ger MyToolWindowControl åtkomst till fönstret MyToolWindow .

  3. I MyToolWindow.cs, ändra konstruktorn som följer MyToolWindow.

    base.Content = new MyToolWindowControl(this);
    
  4. Ändra till designvyn för MyToolWindowControl.

  5. Ta bort knappen och lägg till en kryssruta från verktygslådan i det övre vänstra hörnet.

  6. Lägg till de kontrollerade och okontrollerade händelserna. Markera kryssrutan i designläge. I fönstret Egenskaper klickar du på knappen händelsehanterare (längst upp till höger i fönstret Egenskaper ). Leta upp Förkryssad och skriv checkbox_Checked i textrutan, leta sedan upp Avmarkerad och skriv checkbox_Unchecked i textrutan.

  7. Lägg till kryssrutans händelsehanterare:

    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. Skapa projektet och börja felsöka.

  9. Öppna fönstret MyToolWindow i den experimentella instansen.

    Leta efter fönstrets egenskaper i fönstret Egenskaper . Egenskapen IsChecked visas längst ned i fönstret under kategorin Mina egenskaper .

  10. Markera kryssrutan i fönstret MyToolWindow . IsChecked i fönstret Egenskaper ändras till Sant. Avmarkera kryssrutan i fönstret MyToolWindow . IsChecked i fönstret Egenskaper ändras till False. Ändra värdet för IsChecked i fönstret Egenskaper . Kryssrutan i fönstret MyToolWindow ändras så att den matchar det nya värdet.

    Anmärkning

    Om du måste ta bort ett objekt som visas i fönstret Egenskaper, anropa OnSelectChange med en null markeringscontainer först. När du har avyttrat egenskapen eller objektet kan du ändra till en markeringscontainer med uppdaterade SelectableObjects och SelectedObjects listor.

Ändra markeringslistor

I det här avsnittet lägger du till en urvalslista för en grundläggande egenskapsklass och använder verktygsfönstrets gränssnitt för att välja vilken urvalslista som ska visas.

Ändra urvalslistor

  1. Öppna MyToolWindow.cs och lägg till en offentlig klass med namnet 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. Lägg till en SimpleObject egenskap i MyToolWindow-klassen, plus två metoder för att växla egenskapsfönstrets val mellan rutans fönster och Simple-objektet.

    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. I MyToolWindowControl.cs ersätter du kryssrutehantarna med följande kodrader:

    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. Skapa projektet och börja felsöka.

  5. Öppna fönstret MyToolWindow i den experimentella instansen.

  6. Markera kryssrutan i fönstret MyToolWindow . Fönstret Egenskaper visar objektegenskaperna SimpleSomeText och ReadOnly. Avmarkera kryssrutan. De offentliga egenskaperna för fönstret visas i fönstret Egenskaper .

    Anmärkning

    Visningsnamnet för SomeText är Min text.

Bästa praxis

I den här genomgången ISelectionContainer implementeras så att den valbara objektsamlingen och den valda objektsamlingen är samma samling. Endast det markerade objektet visas i listan Egenskapswebbläsare. För en mer komplett ISelectionContainer-implementering, se exemplen på Reference.ToolWindow.

Visual Studio-verktygsfönster bevaras mellan Visual Studio-sessioner. Mer information om hur du bevarar verktygets fönstertillstånd finns i ProvideProfileAttribute.