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
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".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.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;
Teď do
MyToolWindow
třídy přidejte následující pole.private ITrackSelection trackSel; private SelectionContainer selContainer;
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á rutinaOnToolWindowCreated
události aSelectList
metoda společně vytvoří seznam vybraných objektů, které obsahují pouze samotný objekt podokna nástrojů. MetodaUpdateSelection
říká okně Vlastnosti , aby zobrazily veřejné vlastnosti podokna okna nástroje.Sestavte projekt a spusťte ladění. Měla by se zobrazit experimentální instance sady Visual Studio.
Pokud okno Vlastnosti není viditelné, otevřete ho stisknutím klávesy F4.
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 .
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ů
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.
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 podoknuMyToolWindow
.V Souboru MyToolWindow.cs změňte
MyToolWindow
konstruktor následujícím způsobem:base.Content = new MyToolWindowControl(this);
Přejděte do návrhového zobrazení MyToolWindowControl.
Odstraňte tlačítko a přidejte zaškrtávací políčko ze sady nástrojů do levého horního rohu.
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 .
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(); }
Sestavte projekt a spusťte ladění.
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 .
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
OnSelectChange
null
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
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; } } }
SimpleObject
Přidejte vlastnost doMyToolWindow
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); }
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(); }
Sestavte projekt a spusťte ladění.
V experimentální instanci otevřete okno MyToolWindow .
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.