Özellikleri Özellikler penceresi kullanıma sunma
Bu izlenecek yol, bir nesnenin genel özelliklerini Özellikler penceresinde kullanıma sunar. Bu özelliklerde yaptığınız değişiklikler Özellikler penceresine yansıtılır.
Özellikleri Özellikler penceresi kullanıma sunma
Bu bölümde, özel bir araç penceresi oluşturacak ve özellikler penceresinde ilişkili pencere bölmesi nesnesinin genel özelliklerini görüntüleyeceksiniz.
Özellikleri Özellikler penceresi kullanıma sunma
Her Visual Studio uzantısı, uzantı varlıklarını içeren bir VSIX dağıtım projesiyle başlar. adlı
MyObjectPropertiesExtension
bir Visual Studio VSIX projesi oluşturun. "vsix" araması yaparak VSIX proje şablonunu Yeni Proje iletişim kutusunda bulabilirsiniz.adlı
MyToolWindow
bir Özel Araç Penceresi öğe şablonu ekleyerek bir araç penceresi ekleyin. Çözüm Gezgini proje düğümüne sağ tıklayın ve Yeni Öğe Ekle'yi>seçin. Yeni Öğe Ekle iletişim kutusunda Visual C# Öğeleri>Genişletilebilirliği'ne gidin ve Özel Araç Penceresi'ni seçin. İletişim kutusunun altındaki Ad alanında dosya adını MyToolWindow.cs olarak değiştirin. Özel araç penceresi oluşturma hakkında daha fazla bilgi için bkz . Araç penceresiyle uzantı oluşturma.MyToolWindow.cs dosyasını açın ve aşağıdaki using deyimini ekleyin:
using System.Collections; using System.ComponentModel; using Microsoft.VisualStudio.Shell.Interop;
Şimdi sınıfına aşağıdaki alanları
MyToolWindow
ekleyin.private ITrackSelection trackSel; private SelectionContainer selContainer;
Aşağıdaki kodu
MyToolWindow
sınıfına ekleyin.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
özelliği, arabirim sağlayan ITrackSelection birSTrackSelection
hizmeti almak için kullanırGetService
. OlayOnToolWindowCreated
işleyicisi veSelectList
yöntemi birlikte yalnızca araç penceresi bölmesi nesnesinin kendisini içeren seçili nesnelerin listesini oluşturur. yöntemi,UpdateSelection
Özellikler penceresine araç penceresi bölmesinin genel özelliklerini görüntülemesini söyler.Projeyi derleyin ve hata ayıklamaya başlayın. Visual Studio'nun deneysel örneği görünmelidir.
Özellikler penceresi görünmüyorsa F4 tuşuna basarak açın.
MyToolWindow penceresini açın. Diğer Pencereleri Görüntüle'de >bulabilirsiniz.
Pencere açılır ve pencere bölmesinin genel özellikleri Özellikler penceresinde görüntülenir.
Özellikler penceresindeki Caption özelliğini Nesne Özelliklerim olarak değiştirin.
MyToolWindow penceresi başlık uygun şekilde değişir.
Araç penceresi özelliklerini kullanıma sunma
Bu bölümde bir araç penceresi ekler ve özelliklerini kullanıma sunarsınız. Özelliklerde yaptığınız değişiklikler Özellikler penceresine yansıtılır.
Araç penceresi özelliklerini kullanıma sunma
MyToolWindow.cs dosyasını açın ve sınıfına IsChecked
MyToolWindow
genel boole özelliğini ekleyin.[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; } }
Bu özellik, durumunu daha sonra oluşturacağınız WPF onay kutusundan alır.
MyToolWindowControl.xaml.cs dosyasını açın ve MyToolWindowControl oluşturucusunun yerine aşağıdaki kodu yazın.
private MyToolWindow pane; public MyToolWindowControl(MyToolWindow pane) { InitializeComponent(); this.pane = pane; checkBox.IsChecked = false; }
Bu, bölmeye
MyToolWindow
erişim sağlarMyToolWindowControl
.MyToolWindow.cs dosyasında oluşturucuyu
MyToolWindow
aşağıdaki gibi değiştirin:base.Content = new MyToolWindowControl(this);
MyToolWindowControl öğesinin tasarım görünümüne geçin.
Düğmeyi silin ve Araç Kutusu'ndan sol üst köşeye bir onay kutusu ekleyin.
İşaretli ve İşaretsiz olaylarını ekleyin. Tasarım görünümünde onay kutusunu seçin. Özellikler penceresinde, olay işleyicileri düğmesine (Özellikler penceresinin sağ üst kısmında) tıklayın. İşaretli'yi bulun ve metin kutusuna checkbox_Checked yazın, ardından İşaretsiz'i bulun ve metin kutusuna checkbox_Unchecked yazın.
Onay kutusu olay işleyicilerini ekleyin:
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(); }
Projeyi derleyin ve hata ayıklamaya başlayın.
Deneysel örnekte MyToolWindow penceresini açın.
Özellikler penceresinde pencerenin özelliklerini arayın. IsChecked özelliği pencerenin en altında, Özelliklerim kategorisinin altında görüntülenir.
MyToolWindow penceresindeki onay kutusunu işaretleyin. Özellikler penceresinde IsChecked değeri True olarak değişir. MyToolWindow penceresindeki onay kutusunu temizleyin. Özellikler penceresinde isChecked değeri False olarak değişir. Özellikler penceresinde IsChecked değerini değiştirin. MyToolWindow penceresindeki onay kutusu yeni değerle eşleşecek şekilde değişir.
Dekont
Özellikler penceresinde görüntülenen bir nesneyi atmanız gerekiyorsa, önce bir
null
seçim kapsayıcısı ile çağrısıOnSelectChange
yapın. Özelliği veya nesneyi elden çıkardıktan sonra, güncelleştirilmiş SelectableObjects ve SelectedObjects listelenen bir seçim kapsayıcısına geçiş yapabilirsiniz.
Seçim listelerini değiştirme
Bu bölümde, temel özellik sınıfı için bir seçim listesi ekleyecek ve hangi seçim listesinin görüntüleneceğini seçmek için araç penceresi arabirimini kullanacaksınız.
Seçim listelerini değiştirmek için
MyToolWindow.cs dosyasını açın ve adlı
Simple
bir genel sınıf ekleyin.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; } } }
Sınıfa bir
SimpleObject
özelliğinMyToolWindow
yanı sıra, pencere bölmesi ileSimple
nesne arasında Özellikler penceresi seçimini değiştirmek için iki yöntem ekleyin.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); }
MyToolWindowControl.cs dosyasında, onay kutusu işleyicilerini şu kod satırlarıyla değiştirin:
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(); }
Projeyi derleyin ve hata ayıklamaya başlayın.
Deneysel örnekte MyToolWindow penceresini açın.
MyToolWindow penceresindeki onay kutusunu seçin. Özellikler penceresinde, SomeText ve ReadOnly nesne özellikleri görüntülenir
Simple
. Onay kutusunun işaretini kaldırın. Pencerenin genel özellikleri Özellikler penceresinde görüntülenir.Dekont
SomeText'in görünen adı Metnim'dir.
En iyi uygulama
Bu kılavuzda, ISelectionContainer seçilebilir nesne koleksiyonu ve seçili nesne koleksiyonunun aynı koleksiyon olması için uygulanır. Özellik Tarayıcısı listesinde yalnızca seçili nesne görüntülenir. Daha eksiksiz bir ISelectionContainer uygulaması için bkz. Reference.ToolWindow örnekleri.
Visual Studio araç pencereleri Visual Studio oturumları arasında kalıcıdır. Araç penceresi durumunu kalıcı hale döndürme hakkında daha fazla bilgi için bkz ProvideProfileAttribute. .