Zveřejnění vlastností pro okno Vlastnosti

Tento návod zveřejňuje veřejné vlastnosti objektu v okně Vlastnosti . Změny provedené v těchto vlastnostech se projeví v okně Vlastnosti .

Zveřejnění vlastností pro okno Vlastnosti

V této části vytvoříte vlastní okno nástroje a zobrazíte veřejné vlastnosti přidruženého objektu podokna okna v okně Vlastnosti .

Zveřejnění vlastností pro okno Vlastnosti

  1. Každé rozšíření sady Visual Studio začíná projektem nasazení VSIX, který bude obsahovat prostředky rozšíření. Vytvořte projekt Visual Studio VSIX s názvem MyObjectPropertiesExtension. Šablonu projektu VSIX najdete v dialogovém okně Nový projekt vyhledáním "vsix".

  2. Přidejte okno nástroje přidáním vlastní šablony okna nástrojů s názvem MyToolWindow. V Průzkumník řešení klikněte pravým tlačítkem myši na uzel projektu a vyberte Přidat>novou položku. V dialogovém okně Přidat novou položku přejděte do rozšiřitelnosti položek>Visual C# a vyberte vlastní okno nástrojů. V poli Název v dolní části dialogového okna změňte název souboru na MyToolWindow.cs. Další informace o tom, jak vytvořit vlastní okno nástroje, naleznete v tématu Vytvoření rozšíření s oknem nástroje.

  3. Otevřete Soubor MyToolWindow.cs a přidejte následující příkaz using:

    using System.Collections;
    using System.ComponentModel;
    using Microsoft.VisualStudio.Shell.Interop;
    
  4. Teď do MyToolWindow třídy přidejte následující pole.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
    
  5. Do třídy MyToolWindow přidejte následující kód.

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

    Vlastnost TrackSelection používá GetService k získání STrackSelection služby, která poskytuje ITrackSelection rozhraní. Obslužná rutina OnToolWindowCreated události a SelectList metoda společně vytvoří seznam vybraných objektů, které obsahují pouze samotný objekt podokna nástrojů. Metoda UpdateSelection říká okně Vlastnosti , aby zobrazily veřejné vlastnosti podokna okna nástroje.

  6. Sestavte projekt a spusťte ladění. Měla by se zobrazit experimentální instance sady Visual Studio.

  7. Pokud okno Vlastnosti není viditelné, otevřete ho stisknutím klávesy F4.

  8. Otevřete okno MyToolWindow. Najdete ho v zobrazení>jiných oken.

    Otevře se okno a veřejné vlastnosti podokna okna se zobrazí v okně Vlastnosti .

  9. Změňte vlastnost Titulek v okně Vlastnosti na Vlastnosti objektu Vlastnosti.

    Okno MyToolWindow popis odpovídajícím způsobem změní.

Zveřejnění vlastností okna nástroje

V této části přidáte okno nástroje a zpřístupníte jeho vlastnosti. Změny provedené ve vlastnostech se projeví v okně Vlastnosti .

Zveřejnění vlastností okna nástrojů

  1. Otevřete MyToolWindow.cs a přidejte veřejnou logickou vlastnost IsChecked do MyToolWindow třídy.

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

    Tato vlastnost získá svůj stav z zaškrtávacího políčka WPF, které vytvoříte později.

  2. Otevřete MyToolWindowControl.xaml.cs a nahraďte konstruktor MyToolWindowControl následujícím kódem.

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

    Tím získáte MyToolWindowControl přístup k podoknu MyToolWindow .

  3. V Souboru MyToolWindow.cs změňte MyToolWindow konstruktor následujícím způsobem:

    base.Content = new MyToolWindowControl(this);
    
  4. Přejděte do návrhového zobrazení MyToolWindowControl.

  5. Odstraňte tlačítko a přidejte zaškrtávací políčko ze sady nástrojů do levého horního rohu.

  6. Přidejte zaškrtnuté a nezaškrtnuté události. Zaškrtněte políčko v návrhovém zobrazení. V okně Vlastnosti klikněte na tlačítko obslužné rutiny událostí (v pravém horním rohu okna Vlastnosti ). Najděte zaškrtnuté a do textového pole zadejte checkbox_Checked a potom do textového pole najděte nezaškrtnuté a zadejte checkbox_Unchecked .

  7. Přidejte obslužné rutiny událostí zaškrtávacího políčka:

    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. Sestavte projekt a spusťte ladění.

  9. V experimentální instanci otevřete okno MyToolWindow .

    V okně Vlastnosti vyhledejte vlastnosti okna. Vlastnost IsChecked se zobrazí v dolní části okna v kategorii Moje vlastnosti .

  10. Zaškrtněte políčko v okně MyToolWindow . Kontrola IsChecked v okně Vlastnosti se změní na True. Zrušte zaškrtnutí políčka v okně MyToolWindow . Kontrola IsChecked v okně Vlastnosti se změní na False. Změňte hodnotu IsChecked v okně Vlastnosti . Zaškrtávací políčko v okně MyToolWindow se změní tak, aby odpovídalo nové hodnotě.

    Poznámka:

    Pokud musíte odstranit objekt zobrazený v okně Vlastnosti , nejprve zavolejte OnSelectChangenull kontejner výběru. Po odstranění vlastnosti nebo objektu můžete přejít na kontejner výběru, který se aktualizoval SelectableObjects a SelectedObjects vypíše.

Změna seznamů výběru

V této části přidáte seznam výběru pro základní třídu vlastností a pomocí rozhraní okna nástrojů zvolíte, který seznam výběru se má zobrazit.

Změna seznamů výběru

  1. Otevřete Soubor MyToolWindow.cs a přidejte veřejnou třídu s názvem 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 Přidejte vlastnost do MyToolWindow třídy a dvě metody pro přepnutí výběru okna Vlastnosti mezi podoknem okna a objektemSimple.

    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. V souboru MyToolWindowControl.cs nahraďte obslužné rutiny zaškrtávacího políčka těmito řádky kódu:

    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. Sestavte projekt a spusťte ladění.

  5. V experimentální instanci otevřete okno MyToolWindow .

  6. Zaškrtněte políčko v okně MyToolWindow . Okno Vlastnosti zobrazí vlastnosti objektu Simple , SomeText a ReadOnly. Zrušte zaškrtnutí tohoto políčka. Veřejné vlastnosti okna se zobrazí v okně Vlastnosti .

    Poznámka:

    Zobrazovaný název sometextu je Můj text.

Osvědčený postup

V tomto názorném postupu se implementuje tak, ISelectionContainer aby výběrová kolekce objektů a vybraná kolekce objektů byla stejná. V seznamu Prohlížeče vlastností se zobrazí pouze vybraný objekt. Podrobnější implementaci ISelectionContainer najdete v ukázkách Reference.ToolWindow.

Okna nástrojů sady Visual Studio se uchovávají mezi relacemi sady Visual Studio. Další informace o zachování stavu okna nástroje naleznete v tématu ProvideProfileAttribute.