Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
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".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.Ö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;Lägg nu till följande fält i
MyToolWindowklassen.private ITrackSelection trackSel; private SelectionContainer selContainer;Lägg till följande kod i
MyToolWindowklassen.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
TrackSelectionanvänderGetServiceför att hämta enSTrackSelectiontjänst som tillhandahåller ett ITrackSelection gränssnitt. HändelsehanterarenOnToolWindowCreatedochSelectListmetoden skapar tillsammans en lista över markerade objekt som endast innehåller själva verktygsfönstrets objekt. MetodenUpdateSelectioninstruerar fönstret Egenskaper att visa de offentliga egenskaperna för verktygsfönstret.Skapa projektet och börja felsöka. Den experimentella instansen av Visual Studio bör visas.
Om fönstret Egenskaper inte visas öppnar du det genom att trycka på F4.
Ö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 .
Ä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
Öppna MyToolWindow.cs och lägg till den offentliga booleska egenskapen IsChecked i
MyToolWindowklassen.[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.
Ö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önstretMyToolWindow.I MyToolWindow.cs, ändra konstruktorn som följer
MyToolWindow.base.Content = new MyToolWindowControl(this);Ändra till designvyn för MyToolWindowControl.
Ta bort knappen och lägg till en kryssruta från verktygslådan i det övre vänstra hörnet.
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.
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(); }Skapa projektet och börja felsöka.
Ö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 .
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
OnSelectChangemed ennullmarkeringscontainer 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
Ö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; } } }Lägg till en
SimpleObjectegenskap iMyToolWindow-klassen, plus två metoder för att växla egenskapsfönstrets val mellan rutans fönster ochSimple-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); }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(); }Skapa projektet och börja felsöka.
Öppna fönstret MyToolWindow i den experimentella instansen.
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.