Xamarin.Forms ToolbarItem

Beispiel herunterladen Das Beispiel herunterladen

Die Xamarin.FormsToolbarItem -Klasse ist ein spezieller Schaltflächentyp, der der Auflistung eines Page Objekts ToolbarItems hinzugefügt werden kann. Jedes ToolbarItem Objekt wird als Schaltfläche in der Navigationsleiste der Anwendung angezeigt. Ein ToolbarItem instance kann über ein Symbol verfügen und als primäres oder sekundäres Menüelement angezeigt werden. Die Klasse ToolbarItem erbt von MenuItem.

Die folgenden Screenshots zeigen ToolbarItem Objekte in der Navigationsleiste unter iOS und Android:

Screenshot der ToolbarItem-Demo unter Android und iOS

Die ToolbarItem-Klasse definiert die folgenden Eigenschaften:

  • Orderist ein ToolbarItemOrder Enumerationswert, der bestimmt, ob die ToolbarItem instance im primären oder sekundären Menü angezeigt wird.
  • Priority ist ein integer Wert, der die Anzeigereihenfolge von Elementen in der Auflistung eines Page Objekts ToolbarItems bestimmt.

Die ToolbarItem -Klasse erbt die folgenden typischerweise verwendeten Eigenschaften von der MenuItem -Klasse:

  • Command ist eine ICommand , die das Binden von Benutzeraktionen, z. B. Fingerkippen oder Klicks, an Befehle ermöglicht, die für ein Viewmodel definiert sind.
  • CommandParameter ist ein object , der den Parameter angibt, der Commandan übergeben werden soll.
  • IconImageSource ist ein ImageSource Wert, der das Anzeigesymbol für ein ToolbarItem Objekt bestimmt.
  • Text ist eine string , die den Anzeigetext für ein ToolbarItem Objekt bestimmt.

Diese Eigenschaften werden durch BindableProperty Objekte unterstützt, sodass ein ToolbarItem instance das Ziel von Datenbindungen sein kann.

Hinweis

Eine Alternative zum Erstellen einer Symbolleiste aus ToolbarItem Objekten besteht darin, die NavigationPage.TitleView angefügte Eigenschaft auf eine Layoutklasse festzulegen, die mehrere Ansichten enthält. Weitere Informationen finden Sie unter Anzeigen von Ansichten in der Navigationsleiste.

Erstellen eines ToolbarItem-Objekts

Ein ToolbarItem Objekt kann in XAML instanziiert werden. Die Text Eigenschaften und IconImageSource können festgelegt werden, um zu bestimmen, wie die Schaltfläche in der Navigationsleiste angezeigt wird. Das folgende Beispiel zeigt, wie sie eine ToolbarItem instanziieren, wobei einige allgemeine Eigenschaften festgelegt sind, und sie einer ContentPageToolbarItems Auflistung hinzugefügt werden:

<ContentPage.ToolbarItems>
    <ToolbarItem Text="Example Item"
                 IconImageSource="example_icon.png"
                 Order="Primary"
                 Priority="0" />
</ContentPage.ToolbarItems>

In diesem Beispiel wird ein ToolbarItem Objekt mit Text und einem Symbol angezeigt, das zuerst im primären Navigationsleistenbereich angezeigt wird. Ein ToolbarItem kann auch im Code erstellt und der ToolbarItems Auflistung hinzugefügt werden:

ToolbarItem item = new ToolbarItem
{
    Text = "Example Item",
    IconImageSource = ImageSource.FromFile("example_icon.png"),
    Order = ToolbarItemOrder.Primary,
    Priority = 0
};

// "this" refers to a Page object
this.ToolbarItems.Add(item);

Die von stringals -Eigenschaft angegebene IconImageSource Datei muss in jedem Plattformprojekt vorhanden sein.

Hinweis

Imageressourcen werden auf jeder Plattform unterschiedlich behandelt. Ein ImageSource kann aus Quellen stammen, einschließlich einer lokalen Datei oder eingebetteten Ressource, einem URI oder einem Stream. Weitere Informationen zum Festlegen der IconImageSource Eigenschaft und Images in Xamarin.Formsfinden Sie unter Images in Xamarin.Forms.

Definieren des Schaltflächenverhaltens

Die ToolbarItem -Klasse erbt das Clicked Ereignis von der MenuItem -Klasse. Ein Ereignishandler kann an das Clicked Ereignis angefügt werden, um auf Tippen oder Klicken auf ToolbarItem Instanzen in XAML zu reagieren:

<ToolbarItem ...
             Clicked="OnItemClicked" />

Ein Ereignishandler kann auch im Code angefügt werden:

ToolbarItem item = new ToolbarItem { ... }
item.Clicked += OnItemClicked;

In früheren Beispielen wurde auf einen OnItemClicked Ereignishandler verwiesen. Der folgende Code zeigt eine Beispielimplementierung:

void OnItemClicked(object sender, EventArgs e)
{
    ToolbarItem item = (ToolbarItem)sender;
    messageLabel.Text = $"You clicked the \"{item.Text}\" toolbar item.";
}

ToolbarItem -Objekte können auch die Command Eigenschaften und CommandParameter verwenden, um auf Benutzereingaben ohne Ereignishandler zu reagieren. Weitere Informationen zur ICommand Schnittstelle und zur MVVM-Datenbindung finden Sie unter Xamarin.Forms MenuItem MVVM-Verhalten.

Aktivieren oder Deaktivieren eines ToolbarItem zur Laufzeit

Um die Deaktivierung zur ToolbarItem Laufzeit zu aktivieren, binden Sie dessen Command Eigenschaft an eine ICommand Implementierung, und stellen Sie sicher, dass ein canExecute Delegat die ICommand option entsprechend aktiviert und deaktiviert.

Weitere Informationen finden Sie unter Aktivieren oder Deaktivieren eines MenuItem zur Laufzeit.

Primäre und sekundäre Menüs

Die ToolbarItemOrder Enumeration weist DefaultWerte , Primaryund Secondary auf.

Wenn die Order Eigenschaft auf Primaryfestgelegt ist, wird das ToolbarItem Objekt auf allen Plattformen in der Standard Navigationsleiste angezeigt. ToolbarItem -Objekte werden über den Seitentitel priorisiert, der abgeschnitten wird, um Platz für die Elemente zu schaffen. Die folgenden Screenshots zeigen ToolbarItem Objekte im primären Menü unter iOS und Android:

Screenshot des primären ToolbarItem-Menüs für Android und iOS

Wenn die Order -Eigenschaft auf Secondaryfestgelegt ist, variiert das Verhalten plattformübergreifend. Unter UWP und Android wird das Secondary Elementmenü als drei Punkte angezeigt, die getippt oder geklickt werden können, um Elemente in einer vertikalen Liste anzuzeigen. Unter iOS wird das Secondary Menü "Elemente" unter der Navigationsleiste als horizontale Liste angezeigt. Die folgenden Screenshots zeigen ein sekundäres Menü unter iOS und Android:

Screenshot des sekundären ToolbarItem-Menüs für Android und iOS

Warnung

Das Symbolverhalten in ToolbarItem Objekten, deren Order Eigenschaft auf Secondary festgelegt ist, ist plattformübergreifend inkonsistent. Vermeiden Sie das Festlegen der IconImageSource Eigenschaft für Elemente, die im sekundären Menü angezeigt werden.