Standard Steuerelemente in xamarin. MacStandard controls in Xamarin.Mac

In diesem Artikel wird erläutert, wie Sie mit den standardmäßigen AppKit-Steuerelementen wie Schaltflächen, Bezeichnungen, Textfelder, Kontrollkästchen und segmentierten Steuerelementen in einer xamarin. Mac-Anwendung arbeiten. Es beschreibt das Hinzufügen zu einer Schnittstelle mit Interface Builder und die Interaktion mit Ihnen im Code.This article covers working with the standard AppKit controls such as buttons, labels, text fields, check boxes, and segmented controls in a Xamarin.Mac application. It describes adding them to an interface with Interface Builder and interacting with them in code.

Wenn Sie mit c# und .net in einer xamarin. Mac-Anwendung arbeiten, haben Sie Zugriff auf die gleichen AppKit-Steuerelemente, 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 AppKit Controls 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 AppKit-Steuerelemente 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 Appkit Controls (or optionally create them directly in C# code).

AppKit-Steuerelemente sind die Benutzeroberflächen Elemente, die verwendet werden, um die Benutzeroberfläche der xamarin. Mac-Anwendung zu erstellen.AppKit Controls are the UI Elements that are used to create the User Interface of your Xamarin.Mac application. Sie bestehen aus Elementen wie Schaltflächen, Bezeichnungen, Text Feldern, Kontrollkästchen und segmentierten Steuerelementen und bewirken sofortige Aktionen oder sichtbare Ergebnisse, wenn ein Benutzer Sie bearbeitet.They consist of elements such as Buttons, Labels, Text Fields, Check Boxes and Segmented Controls and cause instant actions or visible results when a user manipulates them.

Der Beispiel-App-HauptbildschirmThe example app main screen

In diesem Artikel werden die Grundlagen der Arbeit mit AppKit-Steuerelementen in einer xamarin. Mac-Anwendung behandelt.In this article, we'll cover the basics of working with AppKit Controls 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 Steuerelemente und AnsichtenIntroduction to Controls and Views

macOS (früher als Mac OS X bezeichnet) stellt einen Standardsatz von Steuerelementen für die Benutzeroberfläche über das AppKit-Framework bereit.macOS (formerly known as Mac OS X) provides a standard set of User Interface controls via the AppKit Framework. Sie bestehen aus Elementen wie Schaltflächen, Bezeichnungen, Text Feldern, Kontrollkästchen und segmentierten Steuerelementen und bewirken sofortige Aktionen oder sichtbare Ergebnisse, wenn ein Benutzer Sie bearbeitet.They consist of elements such as Buttons, Labels, Text Fields, Check Boxes and Segmented Controls and cause instant actions or visible results when a user manipulates them.

Alle AppKit-Steuerelemente verfügen über eine integrierte Standarddarstellung, die für die meisten Verwendungen geeignet ist. einige geben eine Alternative Darstellung für die Verwendung in einem Fensterrahmen Bereich oder in einem Vibrations Effekt Kontext an, z. b. in einem Rand Leistenbereich oder in einem Notification Center-Widget.All of the AppKit Controls have a standard, built-in appearance that will be appropriate for most uses, some specify an alternate appearance for use in a window frame area or in a Vibrance Effect context, such as in a Sidebar area or in a Notification Center widget.

Apple empfiehlt beim Arbeiten mit AppKit-Steuerelementen die folgenden Richtlinien:Apple suggest the following guidelines when working with AppKit Controls:

  • Vermeiden Sie das Mischen von Steuerelement Größen in derselben Ansicht.Avoid mixing control sizes in the same view.
  • Vermeiden Sie im Allgemeinen das vertikale Ändern der Größe von Steuerelementen.In general, avoid resizing controls vertically.
  • Verwenden Sie die System Schriftart und die richtige Textgröße innerhalb eines-Steuer Elements.Use the system font and the proper text size within a control.
  • Verwenden Sie den richtigen Abstand zwischen Steuerelementen.Use the proper spacing between controls.

Weitere Informationen finden Sie im Abschnitt über Steuerelemente und Ansichten von Apple OS X Human Interface Guidelines.For more information, pleas see the About Controls and Views section of Apple's OS X Human Interface Guidelines.

Verwenden von Steuerelementen in einem FensterrahmenUsing Controls in a Window Frame

Es gibt eine Teilmenge von AppKit-Steuerelementen, die einen Anzeige Stil enthalten, mit dem Sie in den Rahmen Bereich eines Fensters eingeschlossen werden können.There are a subset of AppKit Controls that include a display style that allows them to be include in a Window's Frame area. Ein Beispiel finden Sie auf der Symbolleiste der Mail-App:For an example, see the Mail app's toolbar:

Ein Mac-FensterrahmenA Mac Window frame

  • Runden Sie die texturierten Schaltfläche NSButton mit einem Stil von NSTexturedRoundedBezelStyle .Round Textured Button - A NSButton with a style of NSTexturedRoundedBezelStyle.
  • Segmentiertes, gerundetes segmentiertes Steuer Element-A NSSegmentedControl mit einem Stil von NSSegmentStyleTexturedRounded .Textured Rounded Segmented Control - A NSSegmentedControl with a style of NSSegmentStyleTexturedRounded.
  • Segmentiertes, gerundetes segmentiertes Steuer Element-A NSSegmentedControl mit einem Stil von NSSegmentStyleSeparated .Textured Rounded Segmented Control - A NSSegmentedControl with a style of NSSegmentStyleSeparated.
  • Runden Sie das Popup Menü NSPopUpButton mit dem Format NSTexturedRoundedBezelStyle .Round Textured Pop-Up Menu - A NSPopUpButton with a style of NSTexturedRoundedBezelStyle.
  • Runden Sie das Dropdown Menü in der Dropdown Liste NSPopUpButton mit einem Stil von NSTexturedRoundedBezelStyle .Round Textured Drop-Down Menu - A NSPopUpButton with a style of NSTexturedRoundedBezelStyle.
  • Suchleiste -A NSSearchField .Search Bar - A NSSearchField.

Apple empfiehlt beim Arbeiten mit AppKit-Steuerelementen in einem Fensterrahmen die folgenden Richtlinien:Apple suggest the following guidelines when working with AppKit Controls in a Window Frame:

  • Verwenden Sie keine Fensterrahmen spezifischen Steuerelement Stile im Fenster Körper.Don’t use Window Frame specific control styles in the Window Body.
  • Verwenden Sie keine Fenster Text-Steuerelemente oder-Stile im Fensterrahmen.Don’t use Window Body controls or styles in the Window Frame.

Weitere Informationen finden Sie im Abschnitt über Steuerelemente und Ansichten von Apple OS X Human Interface Guidelines.For more information, pleas see the About Controls and Views section of Apple's OS X Human Interface Guidelines.

Erstellen einer Benutzeroberfläche in Interface BuilderCreating a User Interface in Interface Builder

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-Explorerauf die Main.storyboard Datei:To edit your windows design, in the Solution Explorer, double click the Main.storyboard file:

Auswählen des Haupt Storyboards in der Projektmappen-ExplorerSelecting the Main Storyboard in the Solution Explorer

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

Bearbeiten des Storyboards in XcodeEditing the storyboard in Xcode

Um die Benutzeroberfläche zu erstellen, ziehen Sie UI-Elemente (AppKit-Steuerelemente) aus der Bibliothek Inspektor in den- Schnittstellen-Editor in Interface Builder.To create your User Interface, you'll drag UI Elements (AppKit Controls) from the Library Inspector to the Interface Editor in Interface Builder. Im folgenden Beispiel wurde ein vertikales geteiltes Ansichts Steuerelement vom Library Inspector als Droge und im-Schnittstellen- Editorim Fenster abgelegt:In the example below, a Vertical Split View control has been drug from the Library Inspector and placed on the Window in the Interface Editor:

Auswählen einer geteilten Ansicht aus der BibliothekSelecting a Split View from the Library

Weitere Informationen zum Erstellen einer Benutzeroberfläche in Interface Builder finden Sie in der Einführung in Xcode und Interface Builder Dokumentation.For more information on creating a User Interface in Interface Builder, please see our Introduction to Xcode and Interface Builder documentation.

Größenanpassung und PositionierungSizing and Positioning

Wenn ein Steuerelement in der Benutzeroberfläche enthalten ist, verwenden Sie den Einschränkungs- Editor , um seine Position und Größe festzulegen, indem Sie Werte manuell eingeben und Steuern, wie das Steuerelement automatisch positioniert und angepasst wird, wenn die Größe des übergeordneten Fensters oder der Ansicht geändert wird:Once a control has been included in the User Interface, use the Constraint editor to set its location and size by entering values manually and control how the control is automatically positioned and sized when the parent Window or View is resized:

Festlegen der EinschränkungenSetting the constraints

Verwenden Sie den roten I-Balken um die außerhalb des autoresisierungsfelds , um ein Steuerelement an einem angegebenen (x, y) Speicherort zu halten .Use the Red I-Beams around the outside of the Autoresizing box to stick a control to a given (x,y) location. Beispiel:For example:

Bearbeiten einer EinschränkungEditing a constraint

Gibt an, dass das ausgewählte Steuerelement (im Schnittstellen Ansichts & Schnittstellen-Editor) an der oberen und rechten Position des Fensters oder der Ansicht hängen bleibt, wenn die Größe geändert oder verschoben wird.Specifies that the selected control (in the Hierarchy View & Interface Editor) will be stuck to the top and right location of the Window or View as it is resized or moved.

Andere Elemente der Editor-Steuerelement Eigenschaften, z. b. Höhe und Breite:Other elements of the editor control properties such as Height and Width:

Festlegen der HöheSetting the height

Mit dem Ausrichtungs-Editorkönnen Sie auch die Ausrichtung von Elementen mit Einschränkungen steuern:You can also control the alignment of elements with constraints using the Alignment Editor:

Der Ausrichtungs-EditorThe Alignment Editor

Wichtig

Anders als bei IOS, wobei (0,0) die linke obere Ecke des Bildschirms ist, ist in macOS (0,0) die untere linke Ecke.Unlike iOS where (0,0) is the upper left hand corner of the screen, in macOS (0,0) is the lower left hand corner. Dies liegt daran, dass macOS ein mathematisches Koordinatensystem verwendet, bei dem die Zahlenwerte im Wert nach oben und nach rechts steigen.This is because macOS uses a mathematical coordinate system with the number values increasing in value upward and to the right. Dies müssen Sie berücksichtigen, wenn Sie AppKit-Steuerelemente auf einer Benutzeroberfläche platzieren.You need to take this into consideration when placing AppKit controls on a User Interface.

Festlegen einer benutzerdefinierten KlasseSetting a Custom Class

Es gibt Zeiten, in denen Sie mit AppKit-Steuerelementen arbeiten, die Sie benötigen, um untergeordnete und vorhandene Steuerelemente zu Unterklassen und zu erstellen.There are times when working with AppKit Controls that you will need to subclass and existing control and create you own custom version of that class. Definieren Sie beispielsweise eine benutzerdefinierte Version der Quell Liste:For example, defining a custom version of the Source List:

using System;
using AppKit;
using Foundation;

namespace AppKit
{
    [Register("SourceListView")]
    public class SourceListView : NSOutlineView
    {
        #region Computed Properties
        public SourceListDataSource Data {
            get {return (SourceListDataSource)this.DataSource; }
        }
        #endregion

        #region Constructors
        public SourceListView ()
        {

        }

        public SourceListView (IntPtr handle) : base(handle)
        {

        }

        public SourceListView (NSCoder coder) : base(coder)
        {

        }

        public SourceListView (NSObjectFlag t) : base(t)
        {

        }
        #endregion

        #region Override Methods
        public override void AwakeFromNib ()
        {
            base.AwakeFromNib ();

        }
        #endregion

        #region Public Methods
        public void Initialize() {

            // Initialize this instance
            this.DataSource = new SourceListDataSource (this);
            this.Delegate = new SourceListDelegate (this);

        }

        public void AddItem(SourceListItem item) {
            if (Data != null) {
                Data.Items.Add (item);
            }
        }
        #endregion

        #region Events
        public delegate void ItemSelectedDelegate(SourceListItem item);
        public event ItemSelectedDelegate ItemSelected;

        internal void RaiseItemSelected(SourceListItem item) {
            // Inform caller
            if (this.ItemSelected != null) {
                this.ItemSelected (item);
            }
        }
        #endregion
    }
}

, Wenn die [Register("SourceListView")] -Anweisung die SourceListView -Klasse für "Ziel-C" verfügbar macht, sodass in Interface Builder verwendet werden kann.Where the [Register("SourceListView")] instruction exposes the SourceListView class to Objective-C so that is can be used in Interface Builder. Weitere Informationen finden Sie im Abschnitt verfügbar machen von c#-Klassen/-Methoden für "Ziel-c " im Dokument " xamarin. Mac Internals ". 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.For more information, please see the Exposing C# classes / methods to Objective-C section of the Xamarin.Mac Internals document, it explains the Register and Export commands used to wire-up your C# classes to Objective-C objects and UI Elements.

Wenn der obige Code vorhanden ist, können Sie ein AppKit-Steuerelement des Basistyps, den Sie erweitern, auf die Entwurfs Oberfläche ziehen (im folgenden Beispiel eine Quell Liste), zum Identitäts Inspektor wechseln und die benutzerdefinierte Klasse auf den Namen festlegen, den Sie für Ziel-C (Beispiel) verfügbar gemacht haben SourceListView :With the above code in place, you can drag an AppKit Control, of the base type that you are extending, onto the design surface (in the example below, a Source List), switch to the Identity Inspector and set the Custom Class to the name that you exposed to Objective-C (example SourceListView):

Festlegen einer benutzerdefinierten Klasse in XcodeSetting a custom class in Xcode

Verfügbar machen von Outlets und AktionenExposing Outlets and Actions

Bevor in c#-Code auf ein AppKit-Steuerelement zugegriffen werden kann, muss es entweder als ein Outlet oder eine Aktionverfügbar gemacht werden.Before an AppKit Control can be accessed in C# code, it needs to be exposed as either an Outlet or and Action. Wählen Sie hierzu das angegebene Steuerelement entweder in der Schnittstellen Hierarchie oder im Schnittstellen- Editor aus, und wechseln Sie zur Ansicht "Assistant " (stellen Sie sicher, dass das .h Fenster für die Bearbeitung ausgewählt ist):To do this select the given control in either the Interface Hierarchy or the Interface Editor and switch to the Assistant View (ensure that you have the .h of your Window selected for editing):

Auswählen der richtigen zu bearbeitenden DateiSelecting the correct file to edit

Steuerelement: ziehen Sie vom AppKit-Steuerelement auf die Datei "Give" .h , um ein Outlet oder eine Aktionzu erstellen:Control-drag from the AppKit control onto the give .h file to start creating an Outlet or Action:

Ziehen zum Erstellen eines Outlets oder einer AktionDragging to create an Outlet or Action

Wählen Sie den Typ der zu erstellenden Übersetzung aus, und geben Sie dem Outlet oder der Aktion einen NamenSelect the type of exposure to create and give the Outlet or Action a Name:

Konfigurieren des Outlets oder der AktionConfiguring the Outlet or Action

Weitere Informationen zum Arbeiten mit Outlets und Aktionenfinden Sie im Abschnitt Outlets und Aktionen in unserer Einführung in Xcode und Interface Builder Dokumentation.For more information on working with Outlets and Actions, please see the Outlets and Actions section of our Introduction to Xcode and Interface Builder documentation.

Synchronisieren von Änderungen mit XcodeSynchronizing Changes with Xcode

Wenn Sie von Xcode zurück zu Visual Studio für Mac wechseln, werden alle Änderungen, die Sie in Xcode vorgenommen haben, automatisch mit Ihrem xamarin. Mac-Projekt synchronisiert.When you switch back to Visual Studio for Mac from Xcode, any changes that you have made in Xcode will automatically be synchronized with your Xamarin.Mac project.

Wenn Sie SplitViewController.designer.cs in der Projektmappen-Explorer , können Sie sehen, wie Ihr Outlet und Ihre Aktion im c#-Code verknüpft wurden:If you select the SplitViewController.designer.cs in the Solution Explorer you'll be able to see how your Outlet and Action have been wired up in our C# code:

Synchronisieren von Änderungen mit XcodeSynchronizing Changes with Xcode

Beachten Sie, wie die Definition in der SplitViewController.designer.cs Datei:Notice how the definition in the SplitViewController.designer.cs file:

[Outlet]
AppKit.NSSplitViewItem LeftController { get; set; }

[Outlet]
AppKit.NSSplitViewItem RightController { get; set; }

[Outlet]
AppKit.NSSplitView SplitView { get; set; }

Richten Sie in Xcode die Definition in der- MainWindow.h Datei ein:Line up with the definition in the MainWindow.h file in Xcode:

@interface SplitViewController : NSSplitViewController {
    NSSplitViewItem *_LeftController;
    NSSplitViewItem *_RightController;
    NSSplitView *_SplitView;
}

@property (nonatomic, retain) IBOutlet NSSplitViewItem *LeftController;

@property (nonatomic, retain) IBOutlet NSSplitViewItem *RightController;

@property (nonatomic, retain) IBOutlet NSSplitView *SplitView;

Wie Sie sehen, werden Visual Studio für Mac Änderungen an der Datei überwachen .h und dann automatisch die Änderungen in der entsprechenden Datei synchronisieren, .designer.cs um Sie für Ihre Anwendung verfügbar zu machen.As you can see, Visual Studio for Mac listens for changes to the .h file, and then automatically synchronizes those changes in the respective .designer.cs file to expose them to your application. Sie können auch bemerken SplitViewController.designer.cs , dass eine partielle Klasse ist, sodass Visual Studio für Mac nicht ändern muss, SplitViewController.cs wodurch alle Änderungen überschrieben werden, die an der-Klasse vorgenommen wurden.You may also notice that SplitViewController.designer.cs is a partial class, so that Visual Studio for Mac doesn't have to modify SplitViewController.cs which would overwrite any changes that we have made to the class.

Normalerweise müssen Sie das nicht selbst öffnen SplitViewController.designer.cs , sondern nur zu Schulungszwecken.You normally will never need to open the SplitViewController.designer.cs yourself, it was presented here for educational purposes only.

Wichtig

In den meisten Fällen sehen Visual Studio für Mac automatisch alle Änderungen, die in Xcode vorgenommen werden, und synchronisieren Sie mit Ihrem xamarin. Mac-Projekt.In most situations, Visual Studio for Mac will automatically see any changes made in Xcode and sync them to your Xamarin.Mac project. Sollte die Synchronisierung nicht automatisch durchgeführt werden – was sehr selten passiert –, wechseln Sie zurück zu Xcode und dann erneut zu Visual Studio für Mac.In the off occurrence that synchronization doesn't automatically happen, switch back to Xcode and them back to Visual Studio for Mac again. Dadurch wird normalerweise der Synchronisierungsprozess gestartet.This will normally kick off a synchronization cycle.

Arbeiten mit SchaltflächenWorking with Buttons

AppKit bietet verschiedene Arten von Schaltflächen, die in Ihrem Benutzeroberflächen Design verwendet werden können.AppKit provides several types of button that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt " Schalt Flächen" in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Buttons section of Apple's OS X Human Interface Guidelines.

Ein Beispiel für die verschiedenen Schaltflächen TypenAn example of the different button types

Wenn eine Schaltfläche über ein Outletverfügbar gemacht wurde, antwortet der folgende Code darauf, dass Sie gedrückt wird:If a button has been exposed via an Outlet, the following code will respond to it being pressed:

ButtonOutlet.Activated += (sender, e) => {
        FeedbackLabel.StringValue = "Button Outlet Pressed";
};

Für Schaltflächen, die über Aktionenverfügbar gemacht wurden, public partial wird automatisch eine Methode mit dem Namen erstellt, den Sie in Xcode ausgewählt haben.For buttons that have been exposed via Actions, a public partial method will automatically be created for you with the name that you chose in Xcode. Um auf die Aktionzu reagieren, vervollständigen Sie die partielle Methode in der Klasse, für die die Aktion definiert wurde.To respond to the Action, complete the partial method in the class that the Action was defined on. Beispiel:For example:

partial void ButtonAction (Foundation.NSObject sender) {
    // Do something in response to the Action
    FeedbackLabel.StringValue = "Button Action Pressed";
}

Für Schaltflächen mit einem Zustand (z. b. ein-und ausschalten) kann der Zustand mit der- State Eigenschaft für die-Enum überprüft oder festgelegt werden NSCellStateValue .For buttons that have a state (like On and Off), the state can be checked or set with the State property against the NSCellStateValue enum. Beispiel:For example:

DisclosureButton.Activated += (sender, e) => {
    LorumIpsum.Hidden = (DisclosureButton.State == NSCellStateValue.On);
};

Dabei NSCellStateValue kann Folgendes sein:Where NSCellStateValue can be:

  • On Die Schaltfläche wird gedrückt, oder das Steuerelement ist ausgewählt (z. b. ein Kontrollkästchen Einchecken).On - The button is pushed or the control is selected (such as a check in a Check Box).
  • Off : die Schaltfläche wird nicht per pushübertragung oder das Steuerelement nicht ausgewählt.Off - The button is not pushed or the control is not selected.
  • Gemischt : eine Mischung aus -und-aus- Zuständen.Mixed - A mixture of On and Off states.

Markieren einer Schaltfläche als Standard und Festlegen des entsprechenden SchlüsselsMark a Button as Default and Set Key Equivalent

Für alle Schaltflächen, die Sie einem Design der Benutzeroberfläche hinzugefügt haben, können Sie diese Schaltfläche als Standard Schaltfläche markieren, die aktiviert wird, wenn der Benutzer die Rückgabe- /Eingabetaste auf der Tastatur drückt.For any button that you have added to a user interface design, you can mark that button as the Default button that will be activated when the user presses the Return/Enter key on the keyboard. Unter macOS erhält diese Schaltfläche standardmäßig eine blaue Hintergrundfarbe.In macOS, this button will receive a blue background color by default.

Um eine Schaltfläche als Standard festzulegen, wählen Sie Sie in der Interface Builder von Xcode aus.To set a button as default, select it in Xcode's Interface Builder. Wählen Sie als nächstes im Attribut Inspektordas entsprechende Schlüssel Feld aus, und drücken Sie die Rückgabe/Eingabe Taste:Next, in the Attribute Inspector, select the Key Equivalent field and press the Return/Enter key:

Bearbeiten des entsprechenden SchlüsselsEditing the Key Equivalent

Gleichermaßen können Sie jede beliebige Schlüssel Sequenz zuweisen, mit der die Schaltfläche mithilfe der Tastatur anstelle der Maus aktiviert werden kann.Equally, you can assign any key sequence that can be used to activate the button using the keyboard instead of the mouse. Beispielsweise durch Drücken der Befehls-C-Taste in der obigen Abbildung.For example, by pressing the Command-C keys in the image above.

Wenn die app ausgeführt wird und das Fenster mit der Schaltfläche Key und fokussiert ist, wird die Aktion für die Schaltfläche aktiviert, wenn der Benutzer auf die Schaltfläche geklickt hat.When the app is run and the Window with the Button is Key and Focused, if the user presses Command-C, the Action for the button will be activated (as-if the user had clicked on the button).

Arbeiten mit Kontrollkästchen und Options FeldernWorking with Checkboxes and Radio Buttons

AppKit bietet verschiedene Arten von Kontrollkästchen und Optionsfeld Gruppen, die in Ihrem Design der Benutzeroberfläche verwendet werden können.AppKit provides several types of Checkboxes and Radio Button Groups that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt " Schalt Flächen" in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Buttons section of Apple's OS X Human Interface Guidelines.

Ein Beispiel für die verfügbaren CheckBox-TypenAn example of the available checkbox types

Kontrollkästchen und Options Felder (die über Outletsverfügbar gemacht werden) haben einen Zustand (z. b. ein-und ausschalten). der Status kann mit der-Eigenschaft für State die-Enum überprüft oder festgelegt werden NSCellStateValue .Checkboxes and Radio Buttons (exposed via Outlets) have a state (like On and Off), the state can be checked or set with the State property against the NSCellStateValue enum. Beispiel:For example:

AdjustTime.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Adjust Time: {0}",AdjustTime.State == NSCellStateValue.On);
};

Dabei NSCellStateValue kann Folgendes sein:Where NSCellStateValue can be:

  • On Die Schaltfläche wird gedrückt, oder das Steuerelement ist ausgewählt (z. b. ein Kontrollkästchen Einchecken).On - The button is pushed or the control is selected (such as a check in a Check Box).
  • Off : die Schaltfläche wird nicht per pushübertragung oder das Steuerelement nicht ausgewählt.Off - The button is not pushed or the control is not selected.
  • Gemischt : eine Mischung aus -und-aus- Zuständen.Mixed - A mixture of On and Off states.

Zum Auswählen einer Schaltfläche in einer Optionsfeld Gruppe machen Sie das Optionsfeld für die Auswahl als Outlet verfügbar, und legen Sie die zugehörige- State Eigenschaft fest.To select a button in a Radio Button Group, expose the Radio Button to select as an Outlet and set its State property. Beispiel:For Example:

partial void SelectCar (Foundation.NSObject sender) {
    TransportationCar.State = NSCellStateValue.On;
    FeedbackLabel.StringValue = "Car Selected";
}

Um eine Sammlung von Options Feldern zu erstellen, die als Gruppe fungieren und automatisch den ausgewählten Zustand verarbeiten, erstellen Sie eine neue Aktion , und fügen Sie alle Schaltflächen in der Gruppe an den folgenden Punkt an:To get a collection of radio buttons to act as a group and automatically handle the selected state, create a new Action and attach every button in the group to it:

Erstellen einer neuen Aktion

Anschließend weisen Tag Sie jedem Optionsfeld im Attribut Inspektoreinen eindeutigen zu:Next, assign a unique Tag to each radio button in the Attribute Inspector:

Bearbeiten eines Optionsfeld Tags

Speichern Sie die Änderungen, und kehren Sie zu Visual Studio für Mac zurück. Fügen Sie den Code hinzu, um die Aktion zu verarbeiten, an die alle Options Felder angefügt sind:Save your changes and return to Visual Studio for Mac, add the code to handle the Action that all of the radio buttons are attached to:

partial void NumberChanged(Foundation.NSObject sender)
{
    var check = sender as NSButton;
    Console.WriteLine("Changed to {0}", check.Tag);
}

Sie können die- Tag Eigenschaft verwenden, um anzuzeigen, welches Optionsfeld ausgewählt wurde.You can use the Tag property to see which radio button was selected.

Arbeiten mit Menü SteuerelementenWorking with Menu Controls

AppKit stellt verschiedene Typen von Menü Steuerelementen bereit, die in Ihrem Benutzeroberflächen Design verwendet werden können.AppKit provides several types of Menu Controls that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt " Menü Steuerelemente " in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Menu Controls section of Apple's OS X Human Interface Guidelines.

Beispiel-Menü SteuerelementeExample menu controls

Bereitstellen von Menü SteuerungsdatenProviding Menu Control Data

Die Menü Steuerelemente, die für macOS verfügbar sind, können so festgelegt werden, dass die Dropdown Liste entweder aus einer internen Liste (die in Interface Builder vordefiniert oder über Code aufgefüllt werden kann) aufgefüllt wird, oder indem Sie eine eigene benutzerdefinierte, externe Datenquelle bereitstellt.The Menu Controls available to macOS can be set to populate the dropdown list either from an internal list (that can be pre-defined in Interface Builder or populated via code) or by providing your own custom, external data source.

Arbeiten mit internen DatenWorking with Internal Data

Zusätzlich zum Definieren von Elementen in Interface Builder stellen Menü Steuerelemente (wie z. b. NSComboBox ) einen kompletten Satz von Methoden bereit, mit denen Sie die Elemente aus der internen Liste hinzufügen, bearbeiten oder löschen können, die Sie beibehalten:In addition to defining items in Interface Builder, Menu Controls (such as NSComboBox), provide a complete set of methods that allow you to Add, Edit or Delete the items from the internal list that they maintain:

  • Add -Fügt ein neues Element am Ende der Liste hinzu.Add - Adds a new item to the end of the list.
  • GetItem -Gibt das Element am angegebenen Index zurück.GetItem - Returns the item at the given index.
  • Insert -Fügt ein neues Element an der angegebenen Position in die Liste ein.Insert - Inserts a new item in the list at the given location.
  • IndexOf : Gibt den Index des angegebenen Elements zurück.IndexOf - Returns the index of the given item.
  • Remove -Entfernt das angegebene Element aus der Liste.Remove - Removes the given item from the list.
  • RemoveAll -Entfernt alle Elemente aus der Liste.RemoveAll - Removes all items from the list.
  • RemoveAt -Entfernt das Element am angegebenen Index.RemoveAt - Removes the item at the given index.
  • Count : Gibt die Anzahl der Elemente in der Liste zurück.Count - Returns the number of items in the list.

Wichtig

Wenn Sie eine externe Datenquelle () verwenden UsesDataSource = true , wird beim Aufrufen einer der oben genannten Methoden eine Ausnahme ausgelöst.If you are using an Extern Data Source (UsesDataSource = true), calling any of the above methods will throw an exception.

Arbeiten mit einer externen DatenquelleWorking with an External Data Source

Anstatt die integrierten internen Daten zum Bereitstellen der Zeilen für das Menü Steuerelement zu verwenden, können Sie optional eine externe Datenquelle verwenden und ihren eigenen Sicherungs Speicher für die Elemente (z. b. eine SQLite-Datenbank) bereitstellen.Instead of using the built-in Internal Data to provide the rows for your Menu Control, you can optionally use an External Data Source and provide your own backing store for the items (such as a SQLite database).

Zum Arbeiten mit einer externen Datenquelle erstellen Sie eine Instanz der Datenquelle des Menü Steuer Elements (z. b. NSComboBoxDataSource ) und überschreiben mehrere Methoden, um die erforderlichen Daten bereitzustellen:To work with an External Data Source, you'll create an instance of the Menu Control's Data Source (NSComboBoxDataSource for example) and override several methods to provide the necessary data:

  • ItemCount : Gibt die Anzahl der Elemente in der Liste zurück.ItemCount - Returns the number of items in the list.
  • ObjectValueForItem -Gibt den Wert des Elements für einen angegebenen Index zurück.ObjectValueForItem - Returns the value of the item for a given index.
  • IndexOfItem -Gibt den Index für den Wert des Elements "Wert" zurück.IndexOfItem - Returns the index for the give item value.
  • CompletedString -Gibt den ersten übereinstimmenden Elementwert für den teilweise typisierten Elementwert zurück.CompletedString - Returns the first matching item value for the partially typed item value. Diese Methode wird nur aufgerufen, wenn AutoComplete aktiviert wurde ( Completes = true ).This method is only called if Autocomplete has been enabled (Completes = true).

Weitere Informationen finden Sie im Abschnitt Datenbanken und ComboBoxes des Dokuments Arbeiten mit Datenbanken .Please see the Databases and ComboBoxes section of the Working with Databases document for more details.

Anpassen des Erscheinungs Bilds der ListeAdjusting the List's Appearance

Die folgenden Methoden sind verfügbar, um die Darstellung des Menü Steuer Elements anzupassen:The following methods are available to adjust the Menu Control's appearance:

  • HasVerticalScroller -Wenn true , zeigt das Steuerelement eine vertikale Bild Lauf Leiste an.HasVerticalScroller - If true, the control will display a vertical scrollbar.
  • VisibleItems -Passen Sie die Anzahl der Elemente an, die beim Öffnen des Steuer Elements angezeigt werden.VisibleItems - Adjust the number of items displayed when the control is opened. Der Standardwert ist 5 (5).The default value is five (5).
  • IntercellSpacing -Passen Sie den Leerraum um ein angegebenes Element an, indem Sie einen-Wert angeben, NSSize der den Width linken und den rechten Rand angibt, und der Height den Leerraum vor und nach einem Element angibt.IntercellSpacing - Adjust the amount of space around a given item by providing a NSSize where the Width specifies the left and right margins and the Height specifies the space before and after an item.
  • ItemHeight : Gibt die Höhe jedes Elements in der Liste an.ItemHeight - Specifies the height of each item in the list.

Für Dropdown Typen von NSPopupButtons stellt das erste Menü Element den Titel für das-Steuerelement bereit.For Drop-Down types of NSPopupButtons, the first Menu Item provides the title for the control. Beispiel:For Example:

Ein Beispiel für ein Menü SteuerelementAn example menu control

Um den Titel zu ändern, machen Sie dieses Element als Outlet verfügbar, und verwenden Sie Code wie den folgenden:To change the title, expose this item as an Outlet and use code like the following:

DropDownSelected.Title = "Item 1";

Bearbeiten der ausgewählten ElementeManipulating the Selected Items

Die folgenden Methoden und Eigenschaften ermöglichen es Ihnen, die ausgewählten Elemente in der Liste des Menü Steuer Elements zu bearbeiten:The following methods and properties allow you to manipulate the selected items in the Menu Control's list:

  • SelectItem : Wählt das Element am angegebenen Index aus.SelectItem - Selects the item at the given index.
  • Select -Wählen Sie den angegebenen Elementwert aus.Select - Select the given item value.
  • DeselectItem -Wählt das Element am angegebenen Index aus.DeselectItem - Deselects the item at the given index.
  • SelectedIndex : Gibt den Index des derzeit ausgewählten Elements zurück.SelectedIndex - Returns the index of the currently selected item.
  • SelectedValue -Gibt den Wert des aktuell ausgewählten Elements zurück.SelectedValue - Returns the value of the currently selected item.

Verwenden ScrollItemAtIndexToTop Sie das, um das Element am angegebenen Index oben in der Liste darzustellen, und, um ScrollItemAtIndexToVisible zu einer Liste zu scrollen, bis das Element am angegebenen Index sichtbar ist.Use the ScrollItemAtIndexToTop to present the item at the given index at the top of the list and the ScrollItemAtIndexToVisible to scroll to list until the item at the given index is visible.

Reagieren auf EreignisseResponding to Events

Menü Steuerelemente bieten die folgenden Ereignisse, um auf Benutzerinteraktionen zu reagieren:Menu Controls provide the following events to respond to user interaction:

  • SelectionChanged -Wird aufgerufen, wenn der Benutzer einen Wert aus der Liste ausgewählt hat.SelectionChanged - Is called when the user has selected a value from the list.
  • SelectionIsChanging -Wird aufgerufen, bevor das neue Benutzer ausgewählte Element zur aktiven Auswahl wird.SelectionIsChanging - Is called before the new user selected item becomes the active selection.
  • WillPopup -Wird aufgerufen, bevor die Dropdown Liste mit Elementen angezeigt wird.WillPopup - Is called before the dropdown list of items is displayed.
  • WillDismiss -Wird aufgerufen, bevor die Dropdown Liste mit den Elementen geschlossen wird.WillDismiss - Is called before the dropdown list of items is closed.

Für Steuer NSComboBox Elemente enthalten Sie alle Ereignisse wie die NSTextField , z. b. das Changed Ereignis, das aufgerufen wird, wenn der Benutzer den Wert des Texts im Kombinations Feld bearbeitet.For NSComboBox controls, they include all of the same events as the NSTextField, such as the Changed event that is called whenever the user edits the value of the text in the Combo Box.

Optional können Sie auf die in Interface Builder ausgewählten internen Menü Elemente für Daten reagieren, indem Sie das Element an eine Aktion anfügen und Code wie den folgenden verwenden, um auf Aktionen zu reagieren, die vom Benutzer ausgelöst werden:Optionally, you can respond the a Internal Data Menu Items defined in Interface Builder being selected by attaching the item to an Action and use code like the following to respond to Action being triggered by the user:

partial void ItemOne (Foundation.NSObject sender) {
    DropDownSelected.Title = "Item 1";
    FeedbackLabel.StringValue = "Item One Selected";
}

Weitere Informationen zum Arbeiten mit Menüs und Menü Steuerelementen finden Sie in den Menüs und der Popup-Schaltfläche und in der Dropdown Liste mit der Dokumentation.For more information on working with Menus and Menu Controls, please see our Menus and Pop-up Button and Pull-Down Lists documentation.

Arbeiten mit Auswahl SteuerelementenWorking with Selection Controls

AppKit stellt verschiedene Typen von Auswahl Steuerelementen bereit, die in Ihrem Design der Benutzeroberfläche verwendet werden können.AppKit provides several types of Selection Controls that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt Auswahl Steuerelemente in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Selection Controls section of Apple's OS X Human Interface Guidelines.

Beispiele für Auswahl SteuerelementeExample selection controls

Es gibt zwei Möglichkeiten, nachvollziehen zu können, wenn ein Auswahl Steuerelement eine Benutzerinteraktion hat, indem es als Aktionverfügbar gemacht wird.There are two ways to track when a Selection Control has user interaction, by exposing it as an Action. Beispiel:For example:

partial void SegmentButtonPressed (Foundation.NSObject sender) {
    FeedbackLabel.StringValue = string.Format("Button {0} Pressed",SegmentButtons.SelectedSegment);
}

Oder durch Anhängen eines Delegaten an das Activated Ereignis.Or by attaching a Delegate to the Activated event. Beispiel:For example:

TickedSlider.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);
};

Um den Wert eines Auswahl Steuer Elements festzulegen oder zu lesen, verwenden Sie die- IntValue Eigenschaft.To set or read the value of a Selection Control, use the IntValue property. Beispiel:For example:

FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);

Die spezialsteuerelemente (z. b. Color Well und Image Well) verfügen über bestimmte Eigenschaften für die Werttypen.The specialty controls (such as Color Well and Image Well) have specific properties for their value types. Beispiel:For Example:

ColorWell.Color = NSColor.Red;
ImageWell.Image = NSImage.ImageNamed ("tag.png");

NSDatePickerVerfügt über die folgenden Eigenschaften für die direkte Arbeit mit Datum und Uhrzeit:The NSDatePicker has the following properties for working directly with Date and Time:

  • DateValue : der aktuelle Datums-und Uhrzeitwert als NSDate .DateValue - The current date and time value as a NSDate.
  • Local : der Speicherort des Benutzers als NSLocal .Local - The user's location as a NSLocal.
  • TimeInterval : der Zeitwert als Double .TimeInterval - The time value as a Double.
  • TimeZone : die Zeitzone des Benutzers als NSTimeZone .TimeZone - The user's time zone as a NSTimeZone.

Arbeiten mit Indikator SteuerelementenWorking with Indicator Controls

AppKit stellt verschiedene Typen von Indikator Steuerelementen bereit, die in Ihrem Design der Benutzeroberfläche verwendet werden können.AppKit provides several types of Indicator Controls that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt " Indikator Steuerelemente " in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Indicator Controls section of Apple's OS X Human Interface Guidelines.

Beispiele für Indikator SteuerelementeExample indicator controls

Es gibt zwei Möglichkeiten, nachvollziehen zu können, wenn ein Indikator Steuer Element eine Benutzer Interaktion hat, indem es entweder als Aktion oder als Outlet bereitstellt und dem Ereignis einen Delegaten anfügt Activated .There are two ways to track when a Indicator Control has user interaction, either by exposing it as an Action or an Outlet and attaching a Delegate to the Activated event. Beispiel:For example:

LevelIndicator.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Level: {0:###}",LevelIndicator.DoubleValue);
};

Verwenden Sie die-Eigenschaft, um den Wert des Indikator Steuer Elements zu lesen oder festzulegen DoubleValue .To read or set the value of the Indicator Control, use the DoubleValue property. Beispiel:For example:

FeedbackLabel.StringValue = string.Format("Rating: {0:###}",Rating.DoubleValue);

Die unbestimmten und asynchronen Status Indikatoren sollten bei der Anzeige animiert werden.The Indeterminate and Asynchronous Progress Indicators should be animated when displayed. Verwenden Sie die- StartAnimation Methode, um die Animation zu starten, wenn Sie angezeigt werden.Use the StartAnimation method to start the animation when they are displayed. Beispiel:For example:

Indeterminate.StartAnimation (this);
AsyncProgress.StartAnimation (this);

Durch Aufrufen der- StopAnimation Methode wird die Animation beendet.Calling the StopAnimation method will stop the animation.

Arbeiten mit Text SteuerelementenWorking with Text Controls

AppKit stellt verschiedene Typen von Text Steuerelementen bereit, die in Ihrem Benutzeroberflächen Design verwendet werden können.AppKit provides several types of Text Controls that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt Text Steuerelemente in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Text Controls section of Apple's OS X Human Interface Guidelines.

Beispiel Text-SteuerelementeExample text controls

Für Text Felder ( NSTextField ) können die folgenden Ereignisse verwendet werden, um die Benutzerinteraktion zu verfolgen:For Text Fields (NSTextField), the following events can be used to track user interaction:

  • Geändert : wird jedes Mal ausgelöst, wenn der Wert des Felds vom Benutzer geändert wird.Changed - Is fired any time the user changes the value of the field. Beispielsweise bei jedem eingegebenen Zeichen.For example, on every character typed.
  • Editingfing : wird ausgelöst, wenn der Benutzer das Feld für die Bearbeitung auswählt.EditingBegan - Is fired when the user selects the field for editing.
  • Editingended : Wenn der Benutzer die EINGABETASTE im Feld drückt oder das Feld verlässt.EditingEnded - When the user presses the Enter key in the field or leaves the field.

Verwenden StringValue Sie die-Eigenschaft, um den Wert des Felds zu lesen oder festzulegen.Use the StringValue property to read or set the field's value. Beispiel:For example:

FeedbackLabel.StringValue = string.Format("User ID: {0}",UserField.StringValue);

Für Felder, die numerische Werte anzeigen oder bearbeiten, können Sie die- IntValue Eigenschaft verwenden.For fields that display or edit numerical values, you can use the IntValue property. Beispiel:For example:

FeedbackLabel.StringValue = string.Format("Number: {0}",NumberField.IntValue);

Ein NSTextView bietet einen voll funktionsfähigen Textbearbeitungs-und Anzeigebereich mit integrierter Formatierung.An NSTextView provides a full featured text edit and display area with built-in formatting. NSTextFieldVerwenden Sie wie eine die StringValue -Eigenschaft, um den Wert des Bereichs zu lesen oder festzulegen.Like a NSTextField, use the StringValue property to read or set the area's value.

Ein Beispiel für ein komplexes Beispiel für das Arbeiten mit Text Ansichten in einer xamarin. Mac-app finden Sie in der sourcewriter-Beispiel-app.For an example of a complex example of working with Text Views in a Xamarin.Mac app, please see the SourceWriter Sample App. SourceWriter ist ein einfacher Quellcode-Editor, der Unterstützung für die Codevervollständigung und die einfache Syntaxhervorhebung bietet.SourceWriter is a simple source code editor that provides support for code completion and simple syntax highlighting.

Der SourceWriter-Code wurde vollständig kommentiert und es wurden, wenn möglich, Links der Schlüsseltechnologien und -methoden zu wichtigen Informationen in den Leitfäden der Xamarin.Mac-Dokumentation bereitgestellt.The SourceWriter code has been fully commented and, where available, links have be provided from key technologies or methods to relevant information in the Xamarin.Mac Guides Documentation.

Arbeiten mit Inhalts AnsichtenWorking with Content Views

AppKit bietet verschiedene Typen von Inhalts Ansichten, die im Design der Benutzeroberfläche verwendet werden können.AppKit provides several types of Content Views that can be used in your User Interface Design. Weitere Informationen finden Sie im Abschnitt " Inhalts Ansichten " in den Richtlinien für die Benutzeroberfläche von Apple OS X.For more information, please see the Content Views section of Apple's OS X Human Interface Guidelines.

Eine Beispiel InhaltsansichtAn example content view

PopoversPopovers

Ein popover ist ein vorübergehendes Benutzeroberflächen Element, das Funktionen bereitstellt, die sich direkt auf ein bestimmtes Steuerelement oder einen Bildschirm-Bereich beziehen.A popover is a transient UI element that provides functionality that is directly related to a specific a control or an onscreen area. Ein popover schwebt oberhalb des Fensters, das das Steuerelement oder den Bereich enthält, mit dem es verknüpft ist, und der Rahmen enthält einen Pfeil, der den Punkt angibt, von dem er hervorgegangen ist.A popover floats above the window that contains the control or area that it’s related to, and its border includes an arrow to indicate the point from which it emerged.

Gehen Sie folgendermaßen vor, um ein popover zu erstellen:To create a popover, do the following:

  1. Öffnen .storyboard Sie die Datei des Fensters, dem Sie ein popover hinzufügen möchten, indem Sie in der Projektmappen-ExplorerOpen the .storyboard file of the window that you want to add a popover to by double-clicking it in the Solution Explorer

  2. Ziehen Sie einen Ansichts Controller aus der Bibliothek Inspector auf den Schnittstellen-Editor:Drag a View Controller from the Library Inspector onto the Interface Editor:

    Auswählen eines Ansichts Controllers aus der BibliothekSelecting a View Controller from the Library

  3. Definieren Sie die Größe und das Layout der benutzerdefinierten Ansicht:Define the size and the layout of the Custom View:

    Bearbeiten des LayoutsEditing the layout

  4. Klicken Sie mit der Maustaste auf den Ansichts Controller, und ziehen Sie ihn von der Quelle des Popup Fensters:Control-click and drag from the source of the popup onto the View Controller:

    Ziehen zum Erstellen einer TabelleDragging to create a segue

  5. Wählen Sie im Popup Menü popover aus:Select Popover from the popup menu:

    Festlegen des Typs "Typ"Setting the segue type

  6. 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.

Registerkarten AnsichtenTab Views

Registerkarten Sichten bestehen aus einer Registerkarten Liste (die einem segmentierten Steuerelement ähnelt), kombiniert mit einem Satz von Sichten, die als Bereiche bezeichnet werden.Tab Views consists of a Tab List (which looks similar to a Segmented Control) combined with a set of views that are called Panes. Wenn der Benutzer eine neue Registerkarte auswählt, wird der angefügte Bereich angezeigt.When the user selects a new Tab, the Pane that is attached to it will be displayed. Jeder Bereich enthält einen eigenen Satz von Steuerelementen.Each Pane contains its own set of controls.

Wenn Sie mit einer Registerkarten Ansicht in der Interface Builder von Xcode arbeiten, verwenden Sie den Attribut Inspektor , um die Anzahl der Registerkarten festzulegen:When working with a Tab View in Xcode's Interface Builder, use the Attribute Inspector to set the number of Tabs:

Bearbeiten der Anzahl von RegisterkartenEditing the number of tabs

Wählen Sie in der Schnittstellen Hierarchie jede Registerkarte aus, um deren Titel festzulegen, und fügen Sie Benutzeroberflächen Elemente zum Bereich hinzuSelect each Tab in the Interface Hierarchy to set its Title and add UI Elements to its Pane:

Bearbeiten der Registerkarten in XcodeEditing the tabs in Xcode

AppKit-Steuerelemente für DatenbindungData Binding AppKit Controls

Durch die Verwendung von Schlüssel-Wert-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 von Schlüssel-Wert-Codierungs kompatiblen Accessoren in ihrer xamarin. Mac-Anwendung erhalten Sie Zugriff auf andere macOS-Features, wie z. b. Key-Value-Beobachtungen (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 einfache Datenbindung in unserer Datenbindung und in der Dokumentation zum Schlüssel-Wert-codieren .For more information, please see the Simple Data Binding section of our Data Binding and Key-Value Coding documentation.

ZusammenfassungSummary

In diesem Artikel wurde erläutert, wie Sie mit den standardmäßigen AppKit-Steuerelementen wie Schaltflächen, Bezeichnungen, Text Feldern, Kontrollkästchen und segmentierten Steuerelementen in einer xamarin. Mac-Anwendung arbeiten.This article has taken a detailed look at working with the standard AppKit controls such as Buttons, Labels, Text Fields, Check Boxes and Segmented Controls in a Xamarin.Mac application. Es wurde beschrieben, wie Sie Sie zu einem Design der Benutzeroberfläche in Xcode-Interface Builder hinzufügen, das Sie für den Code über Outlets und Aktionen verfügbar machen und mit AppKit-Steuerelementen in c#-Code arbeitenIt covered adding them to a User Interface Design in Xcode's Interface Builder, exposing them to code through Outlets and Actions and working with AppKit Controls in C# Code.