Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 penceresine 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 penceresine göstermek için
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 proje şablonunu yeni proje iletişim kutusunda "vsix" araması yaparak bulabilirsiniz.MyToolWindow
adlı özel bir araç penceresi şablonu ekleyerek bir araç penceresi ekleyin. Çözüm Gezginibölümünde, proje düğümüne sağ tıklayın ve Ekle>Yeni Öğeseçeneğini seçin. Yeni Öğe Ekle iletişim kutusundaVisual 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 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, birSTrackSelection
hizmeti almak ve bir ITrackSelection arabirim sağlamak içinGetService
kullanır. 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. Görüntüle>Diğer Pencereler'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 pencere başlığı buna göre değişir.
Araç penceresi özelliklerini görünür kılma
Bu bölümde bir araç penceresi ekler ve özelliklerini görünür hale getirirsiniz. Özelliklerde yaptığınız değişiklikler Özellikler penceresine yansıtılır.
Araç penceresi özelliklerini gösterme
MyToolWindow.cs 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 açın ve MyToolWindowControl oluşturucuyu aşağıdaki kodla değiştirin.
private MyToolWindow pane; public MyToolWindowControl(MyToolWindow pane) { InitializeComponent(); this.pane = pane; checkBox.IsChecked = false; }
Bu,
MyToolWindowControl
bölmesine erişim sağlarMyToolWindow
.MyToolWindow.cs'da 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.
Seçili ve Seçili Değil 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 IsCheckeddeğeri True olarak değişir. MyToolWindow penceresindeki onay kutusunu temizleyin. Özellikler penceresinde IsCheckedFalse 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.
Uyarı
Özellikler penceresinde görüntülenen bir nesneyi atmanız gerekiyorsa, önce bir
null
seçim kapsayıcısı ileOnSelectChange
çağırın. Özelliği veya nesneyi elden çıkardıktan sonra, SelectableObjects ve SelectedObjects listeleri güncellenmiş olan bir seçim alanına geçebilirsiniz.
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 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ği ekleyin ve Özellikler penceresi seçimini pencere bölmesi ileSimple
nesnesi arasında değiştirecek 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'de 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 kutusunu temizleyin. Pencerenin genel özellikleri Özellikler penceresinde görüntülenir.Uyarı
SomeText'in görünen adı Metnim'dir.
En iyi yöntem
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. .