Udostępnij za pośrednictwem


Uwidaczniaj właściwości okno Właściwości

Ten przewodnik uwidacznia publiczne właściwości obiektu w oknie Właściwości . Zmiany wprowadzone w tych właściwościach zostaną odzwierciedlone w oknie Właściwości .

Uwidaczniaj właściwości okno Właściwości

W tej sekcji utworzysz niestandardowe okno narzędzi i wyświetlisz publiczne właściwości skojarzonego obiektu okienka okien w oknie Właściwości .

Aby uwidocznić właściwości okno Właściwości

  1. Każde rozszerzenie programu Visual Studio rozpoczyna się od projektu wdrażania VSIX, który będzie zawierać zasoby rozszerzenia. Utwórz projekt VSIX programu Visual Studio o nazwie MyObjectPropertiesExtension. Szablon projektu VSIX można znaleźć w oknie dialogowym Nowy projekt , wyszukując frazę "vsix".

  2. Dodaj okno narzędzia, dodając szablon elementu niestandardowego okna narzędzi o nazwie MyToolWindow. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Dodaj>nowy element. W oknie dialogowym Dodawanie nowego elementu przejdź do pozycji Rozszerzalność elementów>Visual C#, a następnie wybierz pozycję Okno narzędzia niestandardowego. W polu Nazwa w dolnej części okna dialogowego zmień nazwę pliku na MyToolWindow.cs. Aby uzyskać więcej informacji na temat tworzenia niestandardowego okna narzędzi, zobacz Tworzenie rozszerzenia za pomocą okna narzędzi.

  3. Otwórz plik MyToolWindow.cs i dodaj następującą instrukcję using:

    using System.Collections;
    using System.ComponentModel;
    using Microsoft.VisualStudio.Shell.Interop;
    
  4. Teraz dodaj następujące pola do MyToolWindow klasy.

    private ITrackSelection trackSel;
    private SelectionContainer selContainer;
    
    
  5. Dodaj poniższy kod do klasy MyToolWindow.

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

    Właściwość TrackSelection używa GetService metody w celu uzyskania STrackSelection usługi, która udostępnia ITrackSelection interfejs. Program OnToolWindowCreated obsługi zdarzeń i SelectList metoda razem tworzą listę wybranych obiektów, które zawierają tylko sam obiekt okienka okien narzędzi. Metoda UpdateSelection informuje okno Właściwości o wyświetlaniu publicznych właściwości okienka okna narzędzi.

  6. Skompiluj projekt i rozpocznij debugowanie. Powinno zostać wyświetlone eksperymentalne wystąpienie programu Visual Studio.

  7. Jeśli okno Właściwości nie jest widoczne, otwórz je, naciskając klawisz F4.

  8. Otwórz okno MyToolWindow. Można go znaleźć w obszarze Wyświetl>inne okna.

    Zostanie otwarte okno i zostanie wyświetlone publiczne właściwości okienka okna w oknie Właściwości .

  9. Zmień właściwość Caption w oknie Właściwości na Właściwości mojego obiektu.

    Okno MyToolWindow podpis odpowiednio się zmienia.

Uwidacznianie właściwości okna narzędzi

W tej sekcji dodasz okno narzędzia i uwidocznisz jego właściwości. Zmiany wprowadzone we właściwościach zostaną odzwierciedlone w oknie Właściwości .

Aby uwidocznić właściwości okna narzędzi

  1. Otwórz plik MyToolWindow.cs i dodaj do klasy właściwość publiczną MyToolWindow wartość logiczną IsChecked.

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

    Ta właściwość pobiera stan z pola wyboru WPF, które utworzysz później.

  2. Otwórz plik MyToolWindowControl.xaml.cs i zastąp konstruktor MyToolWindowControl następującym kodem.

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

    MyToolWindowControl Zapewnia to dostęp do okienkaMyToolWindow.

  3. W pliku MyToolWindow.cs zmień konstruktor w MyToolWindow następujący sposób:

    base.Content = new MyToolWindowControl(this);
    
  4. Przejdź do widoku projektu myToolWindowControl.

  5. Usuń przycisk i dodaj pole wyboru z przybornika do lewego górnego rogu.

  6. Dodaj zaznaczone i niezaznaczone zdarzenia. Zaznacz pole wyboru w widoku projektu. W oknie Właściwości kliknij przycisk programy obsługi zdarzeń (w prawym górnym rogu okna Właściwości). Znajdź pozycję Zaznaczone i wpisz checkbox_Checked w polu tekstowym, a następnie znajdź pozycję Niezaznaczone i wpisz checkbox_Unchecked w polu tekstowym.

  7. Dodaj programy obsługi zdarzeń pola wyboru:

    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. Skompiluj projekt i rozpocznij debugowanie.

  9. W wystąpieniu eksperymentalnym otwórz okno MyToolWindow .

    Wyszukaj właściwości okna w oknie Właściwości . Właściwość IsChecked jest wyświetlana w dolnej części okna w kategorii Moje właściwości .

  10. Zaznacz pole wyboru w oknie MyToolWindow . IsChecked w oknie Właściwości zmieni się na True. Wyczyść pole wyboru w oknie MyToolWindow . IsChecked w oknie Właściwości zmienia się na False. Zmień wartość pola IsChecked w oknie Właściwości . Pole wyboru w oknie MyToolWindow zmienia się tak, aby było zgodne z nową wartością.

    Uwaga

    Jeśli musisz usunąć obiekt wyświetlany w oknie Właściwości , najpierw wywołaj OnSelectChange kontener wyboru z kontenerem null wyboru. Po usunięciu właściwości lub obiektu można zmienić na kontener wyboru, który został zaktualizowany SelectableObjects i SelectedObjects listy.

Zmienianie list wyboru

W tej sekcji dodasz listę wyboru dla podstawowej klasy właściwości i użyjesz interfejsu okna narzędzi, aby wybrać listę wyboru do wyświetlenia.

Aby zmienić listy wyboru

  1. Otwórz plik MyToolWindow.cs i dodaj klasę publiczną o nazwie 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 Dodaj właściwość do MyToolWindow klasy, a także dwie metody, aby przełączyć wybór okna Właściwości między okienkiem okna a obiektemSimple.

    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. W pliku MyToolWindowControl.cs zastąp programy obsługi pól wyboru następującymi wierszami kodu:

    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. Skompiluj projekt i rozpocznij debugowanie.

  5. W wystąpieniu eksperymentalnym otwórz okno MyToolWindow .

  6. Zaznacz pole wyboru w oknie MyToolWindow . W oknie Właściwości są wyświetlane Simple właściwości obiektu SomeText i ReadOnly. Wyczyść pole wyboru. Właściwości publiczne okna są wyświetlane w oknie Właściwości .

    Uwaga

    Nazwa wyświetlana elementu SomeText to My Text.

Najlepsze rozwiązanie

W tym przewodniku ISelectionContainer zaimplementowano tę samą kolekcję obiektów, którą można wybrać i wybraną kolekcję obiektów. Tylko wybrany obiekt jest wyświetlany na liście Przeglądarka właściwości. Aby uzyskać bardziej kompletną implementację ISelectionContainer, zobacz przykłady Reference.ToolWindow.

Okna narzędzi programu Visual Studio są utrwalane między sesjami programu Visual Studio. Aby uzyskać więcej informacji na temat utrwalania stanu okna narzędzi, zobacz ProvideProfileAttribute.