Gliedern von Ansichten in xamarin. MacOutline views in Xamarin.Mac

In diesem Artikel wird das Arbeiten mit Gliederungs Ansichten in einer xamarin. Mac-Anwendung behandelt. Es beschreibt das Erstellen und Verwalten von Gliederungs Ansichten in Xcode und Interface Builder und Programm gesteuertes arbeiten mit Ihnen.This article covers working with outline views in a Xamarin.Mac application. It describes creating and maintaining outline views in Xcode and Interface Builder and working with them programmatically.

Wenn Sie mit c# und .net in einer xamarin. Mac-Anwendung arbeiten, haben Sie Zugriff auf die gleichen Gliederungs Ansichten, die ein Entwickler in Ziel-C und Xcode verwendet.When working with C# and .NET in a Xamarin.Mac application, you have access to the same Outline Views that a developer working in Objective-C and Xcode does. Da xamarin. Mac direkt in Xcode integriert ist, können Sie die Interface Builder von Xcode verwenden, um Ihre Gliederungs Ansichten zu erstellen und zu verwalten (oder Sie optional direkt in c#-Code zu erstellen).Because Xamarin.Mac integrates directly with Xcode, you can use Xcode's Interface Builder to create and maintain your Outline Views (or optionally create them directly in C# code).

Eine Gliederungs Ansicht ist ein Typ von Tabelle, der es dem Benutzer ermöglicht, Zeilen hierarchischer Daten zu erweitern oder zu reduzieren.An Outline View is a type of Table that allows the user expand or collapse rows of hierarchical data. Wie eine Tabellenansicht zeigt eine Gliederungs Ansicht Daten für eine Reihe verwandter Elemente an, wobei Zeilen die einzelnen Elemente und Spalten darstellen, die die Attribute dieser Elemente darstellen.Like a Table View, an Outline View displays data for a set of related items, with rows representing individual items and columns representing the attributes of those items. Im Gegensatz zu einer Tabellenansicht befinden sich Elemente in einer Gliederungs Ansicht nicht in einer flachen Liste, Sie sind in einer Hierarchie angeordnet, wie z. b. Dateien und Ordner auf einer Festplatte.Unlike a Table View, items in an Outline View are not in a flat list, they are organized in a hierarchy, like files and folders on a hard drive.

Ein Beispiel für eine APP-LaufzeitAn example app run

In diesem Artikel werden die Grundlagen der Arbeit mit Gliederungs Ansichten in einer xamarin. Mac-Anwendung behandelt.In this article, we'll cover the basics of working with Outline Views in a Xamarin.Mac application. Es wird dringend empfohlen, dass Sie zunächst den Artikel Hello, Mac , insbesondere die Einführung in Xcode und die Abschnitte zu Interface Builder und Outlets und Aktionen , durcharbeiten, da er wichtige Konzepte und Techniken behandelt, die wir in diesem Artikel verwenden werden.It is highly suggested that you work through the Hello, Mac article first, specifically the Introduction to Xcode and Interface Builder and Outlets and Actions sections, as it covers key concepts and techniques that we'll be using in this article.

Lesen Sie ggf. den Abschnitt verfügbar machen von c#-Klassen/-Methoden zu "Ziel-c " im Dokument " xamarin. Mac ". darin werden die Register -und-Befehle erläutert, die Export zum Verknüpfen ihrer c#-Klassen mit Ziel-c-Objekten und Benutzeroberflächen Elementen verwendet werden.You may want to take a look at the Exposing C# classes / methods to Objective-C section of the Xamarin.Mac Internals document as well, it explains the Register and Export commands used to wire-up your C# classes to Objective-C objects and UI Elements.

Einführung in Gliederungs AnsichtenIntroduction to Outline Views

Eine Gliederungs Ansicht ist ein Typ von Tabelle, der es dem Benutzer ermöglicht, Zeilen hierarchischer Daten zu erweitern oder zu reduzieren.An Outline View is a type of Table that allows the user expand or collapse rows of hierarchical data. Wie eine Tabellenansicht zeigt eine Gliederungs Ansicht Daten für eine Reihe verwandter Elemente an, wobei Zeilen die einzelnen Elemente und Spalten darstellen, die die Attribute dieser Elemente darstellen.Like a Table View, an Outline View displays data for a set of related items, with rows representing individual items and columns representing the attributes of those items. Im Gegensatz zu einer Tabellenansicht befinden sich Elemente in einer Gliederungs Ansicht nicht in einer flachen Liste, Sie sind in einer Hierarchie angeordnet, wie z. b. Dateien und Ordner auf einer Festplatte.Unlike a Table View, items in an Outline View are not in a flat list, they are organized in a hierarchy, like files and folders on a hard drive.

Wenn ein Element in einer Gliederungs Ansicht andere Elemente enthält, kann es vom Benutzer erweitert oder reduziert werden.If an item in an Outline View contains other items, it can be expanded or collapsed by the user. Ein erweiterbares Element zeigt ein Offenlegungs Dreieck an, das nach rechts zeigt, wenn das Element reduziert wird, und zeigt, wenn das Element erweitert wird.An expandable item displays a disclosure triangle, which points to the right when the item is collapsed and points down when the item is expanded. Wenn Sie auf das Offenlegungs Dreieck klicken, wird das Element erweitert oder reduziert.Clicking on the disclosure triangle causes the item to expand or collapse.

Die NSOutlineView Gliederungs Ansicht () ist eine Unterklasse der Tabellenansicht ( NSTableView ) und erbt daher viel von Ihrem Verhalten von der übergeordneten Klasse.The Outline View (NSOutlineView) is a subclass of the Table View (NSTableView) and as such, inherits much of its behavior from its parent class. Infolgedessen werden viele Vorgänge, die von einer Tabellen Sicht unterstützt werden, z. b. das Auswählen von Zeilen oder Spalten, das Neupositionieren von Spalten durchziehen von Spalten Headern usw., auch von einer Gliederungs Ansicht unterstützt.As a result, many operations supported by a Table View, such as selecting rows or columns, repositioning columns by dragging Column Headers, etc., are also supported by an Outline View. Eine xamarin. Mac-Anwendung verfügt über die Kontrolle über diese Features und kann die Parameter der Gliederungs Ansicht (entweder im Code oder Interface Builder) so konfigurieren, dass bestimmte Vorgänge zugelassen oder verweigert werden.A Xamarin.Mac application has control of these features, and can configure the Outline View's parameters (either in code or Interface Builder) to allow or disallow certain operations.

In einer Gliederungs Ansicht werden die eigenen Daten nicht gespeichert. stattdessen wird eine Datenquelle ( NSOutlineViewDataSource ) verwendet, um sowohl die erforderlichen Zeilen als auch die Spalten bereitzustellen.An Outline View does not store it's own data, instead it relies on a Data Source (NSOutlineViewDataSource) to provide both the rows and columns required, on a as-needed basis.

Das Verhalten einer Gliederungs Ansicht kann angepasst werden, indem eine Unterklasse des Gliederungs Ansichts Delegaten () bereitgestellt wird, um die Gliederungs NSOutlineViewDelegate Spalten Verwaltung, den Typ zur Auswahl von Funktionen, die Zeilenauswahl und-Bearbeitung, die benutzerdefinierte Überwachung und benutzerdefinierte Ansichten für einzelne SpaltenAn Outline View's behavior can be customized by providing a subclass of the Outline View Delegate (NSOutlineViewDelegate) to support Outline column management, type to select functionality, row selection and editing, custom tracking, and custom views for individual columns and rows.

Da eine Gliederungs Ansicht viel von Ihrem Verhalten und ihrer Funktionalität mit einer Tabellenansicht gemeinsam nutzt, sollten Sie die Dokumentation der Tabellen Sichten lesen, bevor Sie mit diesem Artikel fortfahren.Since an Outline View shares much of it's behavior and functionality with a Table View, you might want to go through our Table Views documentation before continuing with this article.

Erstellen und Verwalten von Gliederungs Ansichten in XcodeCreating and Maintaining Outline Views in Xcode

Wenn Sie eine neue xamarin. Mac-Cocoa-Anwendung erstellen, erhalten Sie standardmäßig ein Standardmäßiges leeres Standardfenster.When you create a new Xamarin.Mac Cocoa application, you get a standard blank, window by default. Dieses Fenster wird in einer Datei definiert, .storyboard die automatisch im Projekt enthalten ist.This windows is defined in a .storyboard file automatically included in the project. Um den Windows-Entwurf zu bearbeiten, doppelklicken Sie im Projektmappen-Explorer auf die Main.storyboard Datei:To edit your windows design, in the Solution Explorer, double click the Main.storyboard file:

Auswählen des Haupt StoryboardsSelecting the main storyboard

Dadurch wird das Fensterdesign in der Interface Builder von Xcode geöffnet:This will open the window design in Xcode's Interface Builder:

Bearbeiten der Benutzeroberfläche in XcodeEditing the UI in Xcode

Geben outline Sie in das Suchfeld des Bibliotheks Inspektors ein, um die Suche nach den Gliederungs Ansicht-Steuerelementen zu vereinfachen:Type outline into the Library Inspector's Search Box to make it easier to find the Outline View controls:

Auswählen einer Gliederungs Ansicht aus der BibliothekSelecting an Outline View from the Library

Ziehen Sie eine Gliederungs Ansicht auf den Ansichts Controller im Schnittstellen-Editor, füllen Sie den Inhalts Bereich des Ansichts Controllers aus, und legen Sie ihn an der Stelle ab, an der er verkleinert wird und mit dem Fenster im Einschränkungs- Editor wächst:Drag a Outline View onto the View Controller in the Interface Editor, make it fill the content area of the View Controller and set it to where it shrinks and grows with the window in the Constraint Editor:

Bearbeiten der EinschränkungenEditing the constraints

Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und die folgenden Eigenschaften sind im Attribut Inspektor verfügbar:Select the Outline View in the Interface Hierarchy and the following properties are available in the Attribute Inspector:

Screenshot zeigt die Eigenschaften an, die im Attribut Inspektor verfügbar sind.Screenshot shows the properties available in the Attribute Inspector.

  • Gliederungs Spalte : die Tabellenspalte, in der die hierarchischen Daten angezeigt werden.Outline Column - The Table Column in which the Hierarchical data is displayed.
  • Autosave -Gliederungs Spalte: Wenn true , wird die Gliederungs Spalte automatisch zwischen Anwendungs Läufen gespeichert und wieder hergestellt.Autosave Outline Column - If true, the Outline Column will be automatically saved and restored between application runs.
  • Einzug : der Betrag für den Einzug von Spalten unter einem erweiterten Element.Indentation - The amount to indent columns under an expanded item.
  • Der Einzug folgt auf Zellen : Wenn true , wird die Einzugs Markierung zusammen mit den Zellen eingerückt.Indentation Follows Cells - If true, the Indentation Mark will be indented along with the cells.
  • Erweiterte Elemente automatisch speichern : Wenn true , wird der erweiterte/reduzierte Zustand der Elemente automatisch zwischen Anwendungs Ausführungen gespeichert und wieder hergestellt.Autosave Expanded Items - If true, the expanded/collapsed state of the items will be automatically saved and restored between application runs.
  • Inhalts Modus : ermöglicht es Ihnen, NSView NSCell die Daten in den Zeilen und Spalten entweder mithilfe von Sichten () oder Zellen () anzuzeigen.Content Mode - Allows you to use either Views (NSView) or Cells (NSCell) to display the data in the rows and columns. Ab macOS 10,7 sollten Sie Ansichten verwenden.Starting with macOS 10.7, you should use Views.
  • Gleit Komma Gruppen Zeilen : Wenn true , werden in der Tabellenansicht gruppierte Zellen so gezeichnet, als wären Sie unverankert.Floats Group Rows - If true, the Table View will draw grouped cells as if they are floating.
  • Columns : definiert die Anzahl der angezeigten Spalten.Columns - Defines the number of columns displayed.
  • Headers : Wenn true , enthalten die Spaltenheader.Headers - If true, the columns will have Headers.
  • Neuanordnen : Wenn true , kann der Benutzer die Reihenfolge der Spalten in der Tabelle verschieben.Reordering - If true, the user will be able to drag reorder the columns in the table.
  • Größen Änderung: Wenn true , kann der Benutzer Spaltenüberschriften ziehen, um die Größe der Spalten zu ändern.Resizing - If true, the user will be able to drag column Headers to resize columns.
  • Spaltengröße : steuert die automatische Größenanpassung von Spalten durch die Tabelle.Column Sizing - Controls how the table will auto size columns.
  • Hervor Hebung: steuert den Typ der Hervorhebung, die die Tabelle verwendet, wenn eine Zelle ausgewählt wird.Highlight - Controls the type of highlighting the table uses when a cell is selected.
  • Alternative Zeilen : Wenn true , hat eine andere Zeile eine andere Hintergrundfarbe.Alternate Rows - If true, ever other row will have a different background color.
  • Horizontales Raster : wählt den Typ des Rahmens aus, der zwischen Zellen horizontal gezeichnet wird.Horizontal Grid - Selects the type of border drawn between cells horizontally.
  • Vertikales Raster : wählt den Typ des Rahmens aus, der zwischen Zellen vertikal gezeichnet wird.Vertical Grid - Selects the type of border drawn between cells vertically.
  • Raster Farbe : legt die Farbe für den Zell Rahmen fest.Grid Color - Sets the cell border color.
  • Background : legt die Hintergrundfarbe der Zelle fest.Background - Sets the cell background color.
  • Auswahl : Hiermit können Sie steuern, wie der Benutzer Zellen in der Tabelle auswählen kann:Selection - Allow you to control how the user can select cells in the table as:
    • Multiple -if true , der Benutzer kann mehrere Zeilen und Spalten auswählen.Multiple - If true, the user can select multiple rows and columns.
    • Spalte : Wenn true , kann der Benutzer Spalten auswählen.Column - If true,the user can select columns.
    • Typ SELECT -if true , der Benutzer kann ein Zeichen eingeben, um eine Zeile auszuwählen.Type Select - If true, the user can type a character to select a row.
    • Leer : Wenn true , der Benutzer ist nicht erforderlich, um eine Zeile oder Spalte auszuwählen, kann die Tabelle überhaupt keine Auswahl treffen.Empty - If true, the user is not required to select a row or column, the table allows for no selection at all.
  • Autosave : der Name, unter dem das Tabellenformat automatisch gespeichert wird.Autosave - The name that the tables format is automatically save under.
  • Spalten Informationen : Wenn true , werden die Reihenfolge und Breite der Spalten automatisch gespeichert.Column Information - If true, the order and width of the columns will be automatically saved.
  • Zeilenumbrüche : Wählen Sie aus, wie die Zelle Zeilenumbrüche behandelt.Line Breaks - Select how the cell handles line breaks.
  • Abgeschnitten der letzten sichtbaren Zeile : Wenn true , wird die Zelle in den Daten abgeschnitten und kann nicht in die Grenzen passen.Truncates Last Visible Line - If true, the cell will be truncated in the data can not fit inside it's bounds.

Wichtig

Wenn Sie keine ältere xamarin. Mac-Anwendung verwalten, sollten Sie auf den basierten NSView Tabellen Sichten basierende Gliederungs Ansichten verwenden NSCell .Unless you are maintaining a legacy Xamarin.Mac application, NSView based Outline Views should be used over NSCell based Table Views. NSCell wird als Legacy angesehen und wird möglicherweise nicht weiter unterstützt.NSCell is considered legacy and may not be supported going forward.

Wählen Sie eine Tabellenspalte in der Schnittstellen Hierarchie aus, und die folgenden Eigenschaften sind im Attribut Inspektor verfügbar:Select a Table Column in the Interface Hierarchy and the following properties are available in the Attribute Inspector:

Screenshot zeigt die Eigenschaften an, die für die ausgewählte Tabellenspalte im Attribut Inspektor verfügbar sind.Screenshot shows the properties available for the selected table column in the Attribute Inspector.

  • Title : legt den Titel der Spalte fest.Title - Sets the title of the column.
  • Ausrichtung : Legen Sie die Ausrichtung des Texts innerhalb der Zellen fest.Alignment - Set the alignment of the text within the cells.
  • Titel Schriftart : wählt die Schriftart für den Header Text der Zelle aus.Title Font - Selects the font for the cell's Header text.
  • Sortierschlüssel : der Schlüssel, der zum Sortieren der Daten in der Spalte verwendet wird.Sort Key - Is the key used to sort data in the column. Lassen Sie das Feld leer, wenn der Benutzer diese Spalte nicht sortieren kann.Leave blank if the user cannot sort this column.
  • Selector : ist die Aktion , die zum Ausführen der Sortierung verwendet wird.Selector - Is the Action used to perform the sort. Lassen Sie das Feld leer, wenn der Benutzer diese Spalte nicht sortieren kann.Leave blank if the user cannot sort this column.
  • Order : gibt die Sortierreihenfolge für die Spaltendaten an.Order - Is the sort order for the columns data.
  • Ändern der Größe : wählt den Typ der Größe der Größe für die Spalte aus.Resizing - Selects the type of resizing for the column.
  • Editable -if true , der Benutzer kann Zellen in einer Zellen basierten Tabelle bearbeiten.Editable - If true, the user can edit cells in a cell based table.
  • Hidden : Wenn true , wird die Spalte ausgeblendet.Hidden - If true, the column is hidden.

Sie können auch die Größe der Spalte ändern, indem Sie den Zieh Punkt (vertikal auf der rechten Seite der Spalte) nach links oder rechts ziehen.You can also resize the column by dragging it's handle (vertically centered on the column's right side) left or right.

Wählen Sie in der Tabellenansicht die einzelnen Spalten aus, und geben Sie der ersten Spalte den Titel Product und die zweite Spalte Details .Let's select the each Column in our Table View and give the first column a Title of Product and the second one Details.

Wählen Sie NSTableViewCell in der Schnittstellen Hierarchie eine Tabellenzellen Ansicht () aus, und die folgenden Eigenschaften sind im Attribut Inspektor verfügbar:Select a Table Cell View (NSTableViewCell) in the Interface Hierarchy and the following properties are available in the Attribute Inspector:

Screenshot zeigt die Eigenschaften an, die für die ausgewählte Tabellenzelle im Attribut Inspektor verfügbar sind.Screenshot shows the properties available for the selected table cell in the Attribute Inspector.

Dabei handelt es sich um alle Eigenschaften einer Standardansicht.These are all of the properties of a standard View. Sie haben auch die Möglichkeit, die Zeilen für diese Spalte hier zu ändern.You also have the option of resizing the rows for this column here.

Wählen Sie eine Tabellen Ansichts Zelle (standardmäßig eine NSTextField ) in der Schnittstellen Hierarchie aus, und die folgenden Eigenschaften sind im Attribut Inspektor verfügbar:Select a Table View Cell (by default, this is a NSTextField) in the Interface Hierarchy and the following properties are available in the Attribute Inspector:

Screenshot zeigt die Eigenschaften an, die für die ausgewählte Tabellen Ansichts Zelle im Attribut Inspektor verfügbar sind.Screenshot shows the properties available for the selected table view cell in the Attribute Inspector.

Sie verfügen über alle Eigenschaften eines Standard Textfelds, das hier festgelegt werden soll.You'll have all the properties of a standard Text Field to set here. Standardmäßig wird ein Standard Textfeld verwendet, um Daten für eine Zelle in einer Spalte anzuzeigen.By default, a standard Text Field is used to display data for a cell in a column.

Wählen Sie NSTableFieldCell in der Schnittstellen Hierarchie eine Tabellenzellen Ansicht () aus, und die folgenden Eigenschaften sind im Attribut Inspektor verfügbar:Select a Table Cell View (NSTableFieldCell) in the Interface Hierarchy and the following properties are available in the Attribute Inspector:

Screenshot zeigt die Eigenschaften an, die für die ausgewählte Tabellen Ansichts Zelle verfügbar sind.Screenshot shows the properties available for the selected table view cell.

Die wichtigsten Einstellungen finden Sie hier:The most important settings here are:

  • Layout : Wählen Sie aus, wie Zellen in dieser Spalte angelegt werden.Layout - Select how cells in this column are laid out.
  • Verwendet den Einzeilenmodus : Wenn true der Wert ist, ist die Zelle auf eine einzelne Zeile beschränkt.Uses Single Line Mode - If true, the cell is limited to a single line.
  • Breite des ersten Lauf Zeit Layouts : Wenn true , wird die Zelle die für Sie festgelegte Breite (entweder manuell oder automatisch) bevorzugen, wenn Sie beim ersten Ausführen der Anwendung angezeigt wird.First Runtime Layout Width - If true, the cell will prefer the width set for it (either manually or automatically) when it is displayed the first time the application is run.
  • Action : steuert, wann die Bearbeitungs Aktion für die Zelle gesendet wird.Action - Controls when the Edit Action is sent for the cell.
  • Behavior : definiert, ob eine Zelle auswählbar ist oder bearbeitet werden kann.Behavior - Defines if a cell is selectable or editable.
  • Rich-Text : Wenn true , kann die Zelle formatierten und formatierten Text anzeigen.Rich Text - If true, the cell can display formatted and styled text.
  • Rückgängig -Wenn true , übernimmt die Zelle die Verantwortung für das rückgängig-Verhalten.Undo - If true, the cell assumes responsibility for it's undo behavior.

Wählen Sie die Tabellenzellen Ansicht ( NSTableFieldCell ) unten in einer Tabellenspalte in der Schnittstellen Hierarchie aus:Select the Table Cell View (NSTableFieldCell) at the bottom of a Table Column in the Interface Hierarchy:

Auswählen der Tabellenzellen AnsichtSelecting the table cell view

Dies ermöglicht es Ihnen, die Tabellenzellen Ansicht zu bearbeiten, die als Basis Muster für alle Zellen verwendet wird, die für die jeweilige Spalte erstellt werden.This allows you to edit the Table Cell View used as the base Pattern for all cells created for the given column.

Hinzufügen von Aktionen und OutletsAdding Actions and Outlets

Genau wie jedes andere Cocoa UI-Steuerelement müssen wir unsere Gliederungs Ansicht und ihre Spalten und Zellen in c#-Code mithilfe von Aktionen und Outlets (basierend auf der erforderlichen Funktionalität) verfügbar machen.Just like any other Cocoa UI control, we need to expose our Outline View and it's columns and cells to C# code using Actions and Outlets (based on the functionality required).

Der Prozess ist für ein beliebiges Gliederungs Ansichts Element identisch, das wir verfügbar machen möchten:The process is the same for any Outline View element that we want to expose:

  1. Wechseln Sie zum Assistenten-Editor , und stellen Sie sicher, dass die ViewController.h Datei ausgewählt ist:Switch to the Assistant Editor and ensure that the ViewController.h file is selected:

    Auswählen der richtigen h-DateiSelecting the correct .h file

  2. Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und ziehen Sie Sie in die ViewController.h Datei.Select the Outline View from the Interface Hierarchy, control-click and drag to the ViewController.h file.

  3. Erstellen Sie ein Outlet für die Gliederungs Ansicht mit dem Namen ProductOutline :Create an Outlet for the Outline View called ProductOutline:

    Screenshot zeigt ein Outlet mit dem Namen productoutline im Attribut Inspektor.Screenshot shows an Outlet called ProductOutline in the Attribute Inspector.

  4. Erstellen Sie Outlets für die Tabellen Spalten ebenso wie ProductColumn und DetailsColumn :Create Outlets for the tables columns as well called ProductColumn and DetailsColumn:

    Screenshot zeigt ein Outlet mit dem Namen detailscolenn im Attribut Inspektor.Screenshot shows an Outlet named DetailsColumn in the Attribute Inspector.

  5. Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save you changes and return to Visual Studio for Mac to sync with Xcode.

Als nächstes schreiben wir den Code, um einige Daten für die Kontur anzuzeigen, wenn die Anwendung ausgeführt wird.Next, we'll write the code display some data for the outline when the application is run.

Auffüllen der Gliederungs AnsichtPopulating the Outline View

Wenn unsere Gliederungs Ansicht in Interface Builder entworfen und über ein Outlet verfügbar gemacht wird, müssen Sie als nächstes den c#-Code erstellen, um ihn aufzufüllen.With our Outline View designed in Interface Builder and exposed via an Outlet, next we need to create the C# code to populate it.

Zunächst erstellen wir eine neue Klasse, Product die die Informationen für die einzelnen Zeilen und Gruppen von unter Produkten enthält.First, let's create a new Product class to hold the information for the individual rows and groups of sub products. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie neue Datei Hinzufügen > ... aus. Wählen Sie Allgemeine > leere Klasse aus, geben Sie Product als Namen ein, und klicken Sie auf die Schaltfläche neu :In the Solution Explorer, right-click the Project and select Add > New File... Select General > Empty Class, enter Product for the Name and click the New button:

Erstellen einer leeren KlasseCreating an empty class

Erstellen Sie die Product.cs Datei wie folgt:Make the Product.cs file look like the following:

using System;
using Foundation;
using System.Collections.Generic;

namespace MacOutlines
{
    public class Product : NSObject
    {
        #region Public Variables
        public List<Product> Products = new List<Product>();
        #endregion

        #region Computed Properties
        public string Title { get; set;} = "";
        public string Description { get; set;} = "";
        public bool IsProductGroup {
            get { return (Products.Count > 0); }
        }
        #endregion

        #region Constructors
        public Product ()
        {
        }

        public Product (string title, string description)
        {
            this.Title = title;
            this.Description = description;
        }
        #endregion
    }
}

Als nächstes müssen wir eine Unterklasse von erstellen NSOutlineDataSource , um die Daten für den gewünschten Umriss bereitzustellen.Next, we need to create a subclass of NSOutlineDataSource to provide the data for our outline as it is requested. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie neue Datei Hinzufügen > ... aus. Wählen Sie Allgemeine > leere Klasse aus, geben Sie ProductOutlineDataSource als Namen ein, und klicken Sie auf die Schaltfläche neu .In the Solution Explorer, right-click the Project and select Add > New File... Select General > Empty Class, enter ProductOutlineDataSource for the Name and click the New button.

Bearbeiten ProductTableDataSource.cs Sie die Datei, und führen Sie Sie wie folgt aus:Edit the ProductTableDataSource.cs file and make it look like the following:

using System;
using AppKit;
using CoreGraphics;
using Foundation;
using System.Collections;
using System.Collections.Generic;

namespace MacOutlines
{
    public class ProductOutlineDataSource : NSOutlineViewDataSource
    {
        #region Public Variables
        public List<Product> Products = new List<Product>();
        #endregion

        #region Constructors
        public ProductOutlineDataSource ()
        {
        }
        #endregion

        #region Override Methods
        public override nint GetChildrenCount (NSOutlineView outlineView, NSObject item)
        {
            if (item == null) {
                return Products.Count;
            } else {
                return ((Product)item).Products.Count;
            }

        }

        public override NSObject GetChild (NSOutlineView outlineView, nint childIndex, NSObject item)
        {
            if (item == null) {
                return Products [childIndex];
            } else {
                return ((Product)item).Products [childIndex];
            }

        }

        public override bool ItemExpandable (NSOutlineView outlineView, NSObject item)
        {
            if (item == null) {
                return Products [0].IsProductGroup;
            } else {
                return ((Product)item).IsProductGroup;
            }

        }
        #endregion
    }
}

Diese Klasse verfügt über Speicher für die Elemente unserer Gliederungs Ansicht und überschreibt die GetChildrenCount , um die Anzahl der Zeilen in der Tabelle zurückzugeben.This class has storage for our Outline View's items and overrides the GetChildrenCount to return the number of rows in the table. GetChildGibt ein bestimmtes über-oder untergeordnetes Element zurück (wie von der Gliederungs Ansicht angefordert), und ItemExpandable definiert das angegebene Element entweder als übergeordnetes Element oder als untergeordnetes Element.The GetChild returns a specific parent or child item (as requested by the Outline View) and the ItemExpandable defines the specified item as either a parent or a child.

Zum Schluss muss eine Unterklasse von erstellt werden NSOutlineDelegate , um das Verhalten für unseren Umriss bereitzustellen.Finally, we need to create a subclass of NSOutlineDelegate to provide the behavior for our outline. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie neue Datei Hinzufügen > ... aus. Wählen Sie Allgemeine > leere Klasse aus, geben Sie ProductOutlineDelegate als Namen ein, und klicken Sie auf die Schaltfläche neu .In the Solution Explorer, right-click the Project and select Add > New File... Select General > Empty Class, enter ProductOutlineDelegate for the Name and click the New button.

Bearbeiten ProductOutlineDelegate.cs Sie die Datei, und führen Sie Sie wie folgt aus:Edit the ProductOutlineDelegate.cs file and make it look like the following:

using System;
using AppKit;
using CoreGraphics;
using Foundation;
using System.Collections;
using System.Collections.Generic;

namespace MacOutlines
{
    public class ProductOutlineDelegate : NSOutlineViewDelegate
    {
        #region Constants
        private const string CellIdentifier = "ProdCell";
        #endregion

        #region Private Variables
        private ProductOutlineDataSource DataSource;
        #endregion

        #region Constructors
        public ProductOutlineDelegate (ProductOutlineDataSource datasource)
        {
            this.DataSource = datasource;
        }
        #endregion

        #region Override Methods

        public override NSView GetView (NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item) {
            // This pattern allows you reuse existing views when they are no-longer in use.
            // If the returned view is null, you instance up a new view
            // If a non-null view is returned, you modify it enough to reflect the new data
            NSTextField view = (NSTextField)outlineView.MakeView (CellIdentifier, this);
            if (view == null) {
                view = new NSTextField ();
                view.Identifier = CellIdentifier;
                view.BackgroundColor = NSColor.Clear;
                view.Bordered = false;
                view.Selectable = false;
                view.Editable = false;
            }

            // Cast item
            var product = item as Product;

            // Setup view based on the column selected
            switch (tableColumn.Title) {
            case "Product":
                view.StringValue = product.Title;
                break;
            case "Details":
                view.StringValue = product.Description;
                break;
            }

            return view;
        }
        #endregion
    }
}

Wenn Sie eine Instanz von erstellen ProductOutlineDelegate , übergeben wir auch eine Instanz von ProductOutlineDataSource , die die Daten für die Kontur bereitstellt.When we create an instance of the ProductOutlineDelegate, we also pass in an instance of the ProductOutlineDataSource that provides the data for the outline. Die- GetView Methode ist dafür verantwortlich, eine Ansicht (Daten) zurückzugeben, um die Zelle für eine Spalte und eine Zeile mit dem Wert anzuzeigen.The GetView method is responsible for returning a view (data) to display the cell for a give column and row. Wenn möglich, wird eine vorhandene Ansicht wieder verwendet, um die Zelle anzuzeigen, wenn keine neue Ansicht erstellt werden muss.If possible, an existing view will be reused to display the cell, if not a new view must be created.

Um die Gliederung aufzufüllen, bearbeiten Sie die MainWindow.cs Datei, und führen Sie die AwakeFromNib Methode wie folgt aus:To populate the outline, let's edit the MainWindow.cs file and make the AwakeFromNib method look like the following:

public override void AwakeFromNib ()
{
    base.AwakeFromNib ();

    // Create data source and populate
    var DataSource = new ProductOutlineDataSource ();

    var Vegetables = new Product ("Vegetables", "Greens and Other Produce");
    Vegetables.Products.Add (new Product ("Cabbage", "Brassica oleracea - Leaves, axillary buds, stems, flowerheads"));
    Vegetables.Products.Add (new Product ("Turnip", "Brassica rapa - Tubers, leaves"));
    Vegetables.Products.Add (new Product ("Radish", "Raphanus sativus - Roots, leaves, seed pods, seed oil, sprouting"));
    Vegetables.Products.Add (new Product ("Carrot", "Daucus carota - Root tubers"));
    DataSource.Products.Add (Vegetables);

    var Fruits = new Product ("Fruits", "Fruit is a part of a flowering plant that derives from specific tissues of the flower");
    Fruits.Products.Add (new Product ("Grape", "True Berry"));
    Fruits.Products.Add (new Product ("Cucumber", "Pepo"));
    Fruits.Products.Add (new Product ("Orange", "Hesperidium"));
    Fruits.Products.Add (new Product ("Blackberry", "Aggregate fruit"));
    DataSource.Products.Add (Fruits);

    var Meats = new Product ("Meats", "Lean Cuts");
    Meats.Products.Add (new Product ("Beef", "Cow"));
    Meats.Products.Add (new Product ("Pork", "Pig"));
    Meats.Products.Add (new Product ("Veal", "Young Cow"));
    DataSource.Products.Add (Meats);

    // Populate the outline
    ProductOutline.DataSource = DataSource;
    ProductOutline.Delegate = new ProductOutlineDelegate (DataSource);

}

Wenn die Anwendung ausgeführt wird, wird Folgendes angezeigt:If we run the application, the following is displayed:

Die reduzierte AnsichtThe collapsed view

Wenn ein Knoten in der Gliederungs Ansicht erweitert wird, sieht er wie folgt aus:If we expand a node in the Outline View, it will look like the following:

Die erweiterte AnsichtThe expanded view

Sortieren nach SpalteSorting by Column

Lassen Sie den Benutzer das Sortieren der Daten in der Gliederung zu, indem Sie auf eine Spaltenüberschrift klicken.Let's allow the user to sort the data in the outline by clicking on a Column Header. Doppelklicken Sie zunächst auf die Main.storyboard Datei, um Sie zur Bearbeitung in Interface Builder zu öffnen.First, double-click the Main.storyboard file to open it for editing in Interface Builder. Wählen Sie die Product Spalte aus, geben Sie für den Title Sortierschlüssel compare: für die Auswahl ein, und wählen Sie Ascending für die Reihenfolge aus:Select the Product column, enter Title for the Sort Key, compare: for the Selector and select Ascending for the Order:

Festlegen der Sortierschlüssel ReihenfolgeSetting the sort key order

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save your changes and return to Visual Studio for Mac to sync with Xcode.

Bearbeiten Sie nun die ProductOutlineDataSource.cs Datei, und fügen Sie die folgenden Methoden hinzu:Now let's edit the ProductOutlineDataSource.cs file and add the following methods:

public void Sort(string key, bool ascending) {

    // Take action based on key
    switch (key) {
    case "Title":
        if (ascending) {
            Products.Sort ((x, y) => x.Title.CompareTo (y.Title));
        } else {
            Products.Sort ((x, y) => -1 * x.Title.CompareTo (y.Title));
        }
        break;
    }
}

public override void SortDescriptorsChanged (NSOutlineView outlineView, NSSortDescriptor[] oldDescriptors)
{
    // Sort the data
    Sort (oldDescriptors [0].Key, oldDescriptors [0].Ascending);
    outlineView.ReloadData ();
}

Mit der- Sort Methode können wir die Daten in der Datenquelle auf der Grundlage eines angegebenen Product Klassen Felds in aufsteigender oder absteigender Reihenfolge sortieren.The Sort method allow us to sort the data in the Data Source based on a given Product class field in either ascending or descending order. Die überschriebene- SortDescriptorsChanged Methode wird jedes Mal aufgerufen, wenn die Verwendung auf eine Spaltenüberschrift klickt.The overridden SortDescriptorsChanged method will be called every time the use clicks on a Column Heading. Der Schlüssel Wert, den wir in Interface Builder festgelegt haben, und die Sortierreihenfolge für diese Spalte werden an Sie übermittelt.It will be passed the Key value that we set in Interface Builder and the sort order for that column.

Wenn Sie die Anwendung ausführen und in die Spaltenüberschriften klicken, werden die Zeilen nach dieser Spalte sortiert:If we run the application and click in the Column Headers, the rows will be sorted by that column:

Beispiel für eine sortierte AusgabeExample of sorted output

ZeilenauswahlRow Selection

Wenn Sie dem Benutzer die Auswahl einer einzelnen Zeile gestatten möchten, doppelklicken Sie auf die Main.storyboard Datei, um Sie für die Bearbeitung in Interface Builder zu öffnen.If you want to allow the user to select a single row, double-click the Main.storyboard file to open it for editing in Interface Builder. Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und deaktivieren Sie das Kontrollkästchen mehrfach im Attribut Inspektor:Select the Outline View in the Interface Hierarchy and uncheck the Multiple checkbox in the Attribute Inspector:

Screenshot zeigt den Attribut Inspektor, in dem Sie die mehrere Einstellungen ändern können.Screenshot shows the Attribute Inspector where you can change the Multiple setting.

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save your changes and return to Visual Studio for Mac to sync with Xcode.

Bearbeiten Sie anschließend die ProductOutlineDelegate.cs Datei, und fügen Sie die folgende Methode hinzu:Next, edit the ProductOutlineDelegate.cs file and add the following method:

public override bool ShouldSelectItem (NSOutlineView outlineView, NSObject item)
{
    // Don't select product groups
    return !((Product)item).IsProductGroup;
}

Dadurch kann der Benutzer eine beliebige einzelne Zeile in der Gliederungs Ansicht auswählen.This will allow the user to select any single row in the Outline View. Geben Sie false für jedes ShouldSelectItem Element zurück, das nicht vom Benutzer ausgewählt werden kann, oder false für jedes Element, wenn Sie nicht möchten, dass der Benutzer Elemente auswählen kann.Return false for the ShouldSelectItem for any item that you don't want the user to be able to select or false for every item if you don't want the user to be able to select any items.

Auswahl mehrerer ZeilenMultiple Row Selection

Wenn Sie zulassen möchten, dass der Benutzer mehrere Zeilen auswählt, doppelklicken Sie Main.storyboard auf die Datei, um Sie für die Bearbeitung in Interface Builder zu öffnen.If you want to allow the user to select a multiple rows, double-click the Main.storyboard file to open it for editing in Interface Builder. Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und aktivieren Sie das Kontrollkästchen mehrfach im Attribut Inspektor:Select the Outline View in the Interface Hierarchy and check the Multiple checkbox in the Attribute Inspector:

Screenshot zeigt den Attribut Inspektor, in dem Sie mehrere auswählen können.Screenshot shows the Attribute Inspector where you can select Multiple.

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save your changes and return to Visual Studio for Mac to sync with Xcode.

Bearbeiten Sie anschließend die ProductOutlineDelegate.cs Datei, und fügen Sie die folgende Methode hinzu:Next, edit the ProductOutlineDelegate.cs file and add the following method:

public override bool ShouldSelectItem (NSOutlineView outlineView, NSObject item)
{
    // Don't select product groups
    return !((Product)item).IsProductGroup;
}

Dadurch kann der Benutzer eine beliebige einzelne Zeile in der Gliederungs Ansicht auswählen.This will allow the user to select any single row in the Outline View. Geben Sie false für jedes ShouldSelectRow Element zurück, das nicht vom Benutzer ausgewählt werden kann, oder false für jedes Element, wenn Sie nicht möchten, dass der Benutzer Elemente auswählen kann.Return false for the ShouldSelectRow for any item that you don't want the user to be able to select or false for every item if you don't want the user to be able to select any items.

Zum Auswählen der Zeile eingebenType to Select Row

Wenn Sie es dem Benutzer gestatten möchten, ein Zeichen mit ausgewählter Gliederungs Ansicht einzugeben, und die erste Zeile mit diesem Zeichen auszuwählen, doppelklicken Sie Main.storyboard auf die Datei, um Sie zur Bearbeitung in Interface Builder zu öffnen.If you want to allow the user to type a character with the Outline View selected and select the first row that has that character, double-click the Main.storyboard file to open it for editing in Interface Builder. Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und aktivieren Sie das Kontrollkästchen Type Select in the Attribute Inspector:Select the Outline View in the Interface Hierarchy and check the Type Select checkbox in the Attribute Inspector:

Bearbeiten des Zeilen TypsEditing the row type

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save your changes and return to Visual Studio for Mac to sync with Xcode.

Nun bearbeiten wir die ProductOutlineDelegate.cs Datei und fügen die folgende Methode hinzu:Now let's edit the ProductOutlineDelegate.cs file and add the following method:

public override NSObject GetNextTypeSelectMatch (NSOutlineView outlineView, NSObject startItem, NSObject endItem, string searchString)
{
    foreach(Product product in DataSource.Products) {
        if (product.Title.Contains (searchString)) {
            return product;
        }
    }

    // Not found
    return null;
}

Die GetNextTypeSelectMatch -Methode nimmt die angegebene searchString an und gibt das Element des ersten zurück Product , das diese Zeichenfolge enthält Title .The GetNextTypeSelectMatch method takes the given searchString and returns the item of the first Product that has that string in it's Title.

Neuordnen von SpaltenReordering Columns

Wenn Sie zulassen möchten, dass der Benutzer die Neuanordnen von Spalten in der Gliederungs Ansicht zieht, doppelklicken Sie Main.storyboard auf die Datei, um Sie zur Bearbeitung in Interface Builder zu öffnen.If you want to allow the user to drag reorder columns in the Outline View, double-click the Main.storyboard file to open it for editing in Interface Builder. Wählen Sie die Gliederungs Ansicht in der Schnittstellen Hierarchie aus, und aktivieren Sie das Kontrollkästchen Neuanordnen im Attribut Inspektor:Select the Outline View in the Interface Hierarchy and check the Reordering checkbox in the Attribute Inspector:

Screenshot zeigt den Attribut Inspektor, in dem Sie Neuanordnen auswählen können.Screenshot shows the Attribute Inspector where you can select Reordering.

Wenn wir einen Wert für die Eigenschaft Autosave festlegen und das Feld Spalten Informationen aktivieren, werden alle Änderungen, die wir am Layout der Tabelle vornehmen, automatisch für uns gespeichert und beim nächsten Ausführen der Anwendung wieder hergestellt.If we give a value for the Autosave property and check the Column Information field, any changes we make to the table's layout will automatically be saved for us and restored the next time the application is run.

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück, um mit Xcode zu synchronisieren.Save your changes and return to Visual Studio for Mac to sync with Xcode.

Nun bearbeiten wir die ProductOutlineDelegate.cs Datei und fügen die folgende Methode hinzu:Now let's edit the ProductOutlineDelegate.cs file and add the following method:

public override bool ShouldReorder (NSOutlineView outlineView, nint columnIndex, nint newColumnIndex)
{
    return true;
}

Die- ShouldReorder Methode sollte true für jede Spalte zurückgeben, für die das ziehen in das reorderstream erfolgen soll, andernfalls newColumnIndex false .The ShouldReorder method should return true for any column that it want to allow to be drag reordered into the newColumnIndex, else return false;

Wenn wir die Anwendung ausführen, können wir die Spaltenkopfzeilen verschieben, um die Spalten neu zu sortieren:If we run the application, we can drag Column Headers around to reorder our columns:

Beispiel für das Neuordnen von SpaltenExample of reordering columns

Bearbeiten von ZellenEditing Cells

Wenn Sie zulassen möchten, dass der Benutzer die Werte für eine bestimmte Zelle bearbeitet, bearbeiten Sie die ProductOutlineDelegate.cs Datei, und ändern Sie die GetViewForItem Methode wie folgt:If you want to allow the user to edit the values for a given cell, edit the ProductOutlineDelegate.cs file and change the GetViewForItem method as follows:

public override NSView GetView (NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item) {
    // Cast item
    var product = item as Product;

    // This pattern allows you reuse existing views when they are no-longer in use.
    // If the returned view is null, you instance up a new view
    // If a non-null view is returned, you modify it enough to reflect the new data
    NSTextField view = (NSTextField)outlineView.MakeView (tableColumn.Title, this);
    if (view == null) {
        view = new NSTextField ();
        view.Identifier = tableColumn.Title;
        view.BackgroundColor = NSColor.Clear;
        view.Bordered = false;
        view.Selectable = false;
        view.Editable = !product.IsProductGroup;
    }

    // Tag view
    view.Tag = outlineView.RowForItem (item);

    // Allow for edit
    view.EditingEnded += (sender, e) => {

        // Grab product
        var prod = outlineView.ItemAtRow(view.Tag) as Product;

        // Take action based on type
        switch(view.Identifier) {
        case "Product":
            prod.Title = view.StringValue;
            break;
        case "Details":
            prod.Description = view.StringValue;
            break;
        }
    };

    // Setup view based on the column selected
    switch (tableColumn.Title) {
    case "Product":
        view.StringValue = product.Title;
        break;
    case "Details":
        view.StringValue = product.Description;
        break;
    }

    return view;
}

Wenn nun die Anwendung ausgeführt wird, kann der Benutzer die Zellen in der Tabellenansicht bearbeiten:Now if we run the application, the user can edit the cells in the Table View:

Beispiel für das Bearbeiten von ZellenAn example of editing cells

Verwenden von Bildern in Gliederungs AnsichtenUsing Images in Outline Views

Wenn Sie ein Bild als Teil der Zelle in einem einschließen möchten NSOutlineView , müssen Sie ändern, wie die Daten von der-Methode der Gliederungs Ansicht zurückgegeben werden, NSTableViewDelegate's GetView um anstelle der typischen zu verwenden NSTableCellView NSTextField .To include an image as part of the cell in a NSOutlineView, you'll need to change how the data is returned by the Outline View's NSTableViewDelegate's GetView method to use a NSTableCellView instead of the typical NSTextField. Beispiel:For example:

public override NSView GetView (NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item) {
    // Cast item
    var product = item as Product;

    // This pattern allows you reuse existing views when they are no-longer in use.
    // If the returned view is null, you instance up a new view
    // If a non-null view is returned, you modify it enough to reflect the new data
    NSTableCellView view = (NSTableCellView)outlineView.MakeView (tableColumn.Title, this);
    if (view == null) {
        view = new NSTableCellView ();
        if (tableColumn.Title == "Product") {
            view.ImageView = new NSImageView (new CGRect (0, 0, 16, 16));
            view.AddSubview (view.ImageView);
            view.TextField = new NSTextField (new CGRect (20, 0, 400, 16));
        } else {
            view.TextField = new NSTextField (new CGRect (0, 0, 400, 16));
        }
        view.TextField.AutoresizingMask = NSViewResizingMask.WidthSizable;
        view.AddSubview (view.TextField);
        view.Identifier = tableColumn.Title;
        view.TextField.BackgroundColor = NSColor.Clear;
        view.TextField.Bordered = false;
        view.TextField.Selectable = false;
        view.TextField.Editable = !product.IsProductGroup;
    }

    // Tag view
    view.TextField.Tag = outlineView.RowForItem (item);

    // Allow for edit
    view.TextField.EditingEnded += (sender, e) => {

        // Grab product
        var prod = outlineView.ItemAtRow(view.Tag) as Product;

        // Take action based on type
        switch(view.Identifier) {
        case "Product":
            prod.Title = view.TextField.StringValue;
            break;
        case "Details":
            prod.Description = view.TextField.StringValue;
            break;
        }
    };

    // Setup view based on the column selected
    switch (tableColumn.Title) {
    case "Product":
        view.ImageView.Image = NSImage.ImageNamed (product.IsProductGroup ? "tags.png" : "tag.png");
        view.TextField.StringValue = product.Title;
        break;
    case "Details":
        view.TextField.StringValue = product.Description;
        break;
    }

    return view;
}

Weitere Informationen finden Sie im Abschnitt Verwenden von Bildern mit Gliederungs Ansichten in unserer Dokumentation zum Arbeiten mit Images.For more information, please see the Using Images with Outline Views section of our Working with Image documentation.

Daten Bindungs Gliederungs SichtenData Binding Outline Views

Durch die Verwendung Key-Value Codierungs-und Daten Bindungs Techniken in ihrer xamarin. Mac-Anwendung können Sie die Menge des Codes, den Sie schreiben und verwalten müssen, erheblich verringern, um Benutzeroberflächen Elemente aufzufüllen und mit Ihnen zu arbeiten.By using Key-Value Coding and Data Binding techniques in your Xamarin.Mac application, you can greatly decrease the amount of code that you have to write and maintain to populate and work with UI elements. Außerdem profitieren Sie von der weiteren Entkopplung ihrer Sicherungsdaten (Datenmodell) von der Front-End-Benutzeroberfläche (Model-View-Controller). Dies führt zu einer einfacheren Wartung und einem flexibleren Anwendungs Entwurf.You also have the benefit of further decoupling your backing data (Data Model) from your front end User Interface (Model-View-Controller), leading to easier to maintain, more flexible application design.

Key-Value Coding (KVC) ist ein Mechanismus für den indirekten Zugriff auf die Eigenschaften eines Objekts, indem Schlüssel (speziell formatierte Zeichen folgen) verwendet werden, um Eigenschaften zu identifizieren, anstatt über Instanzvariablen oder Zugriffsmethoden () auf Sie zuzugreifen get/set .Key-Value Coding (KVC) is a mechanism for accessing an object’s properties indirectly, using keys (specially formatted strings) to identify properties instead of accessing them through instance variables or accessor methods (get/set). Durch die Implementierung Key-Value Codierungs kompatiblen Accessoren in ihrer xamarin. Mac-Anwendung erhalten Sie Zugriff auf andere macOS-Features, wie z. b. Key-Value Beobachtung (KVO), Datenbindung, Kerndaten, Cocoa-Bindungen und scriptbarkeit.By implementing Key-Value Coding compliant accessors in your Xamarin.Mac application, you gain access to other macOS features such as Key-Value Observing (KVO), Data Binding, Core Data, Cocoa bindings, and scriptability.

Weitere Informationen finden Sie im Abschnitt Gliederung der Datenbindung in der Dokumentation zur Datenbindung und Key-Value Codierung .For more information, please see the Outline View Data Binding section of our Data Binding and Key-Value Coding documentation.

ZusammenfassungSummary

In diesem Artikel wurde die Arbeit mit Gliederungs Ansichten in einer xamarin. Mac-Anwendung ausführlich erläutert.This article has taken a detailed look at working with Outline Views in a Xamarin.Mac application. Wir haben die verschiedenen Typen und Verwendungsmöglichkeiten von Gliederungs Ansichten gesehen, das Erstellen und Verwalten von Gliederungs Ansichten in Xcode-Interface Builder und das Arbeiten mit Gliederungs Ansichten in c#-Code.We saw the different types and uses of Outline Views, how to create and maintain Outline Views in Xcode's Interface Builder and how to work with Outline Views in C# code.