2017-03-23 1 views
1

ich eine App erschaffe, in denen ich die Fußzeile wollen, die für alle XAML pages.I versuchte Lösung auf diesen Link xamarin forumWie erstelle ich eine Fußzeile, die für alle xamarin Formularseiten verwendet werden kann?

gegeben gemeinsam sein wird, aber es Fehler für partielle Klasse zeigt bcoz I Xamarin XAML bin Formular Seite beim Erben der Klasse PageToInherit. Wenn ich nur Seite (nur .cs-Datei) verwenden, dann gibt es keinen Fehler.

public partial class TodoList : PageToInherit 
{ 
    public TodoList() 
    { 
     InitializeComponent(); 
     this.Title = "TodoList page"; 
     Button button = new Button(); 
     button.Text = "BUTTON 1"; 

     MainStackLayout.Children.Add(button); 

     Content = MainStackLayout; 
    } 
} 

Antwort

1

ich glaube, Sie einen Blick auf TemplatedPage

einer Control erstellen nehmen

<?xml version="1.0" encoding="utf-8" ?> 
<Application 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    x:Class="Mobile.App"> 
    <Application.Resources> 
    <ResourceDictionary> 
     <ControlTemplate x:Key="MainPageTemplate"> 
     <StackLayout> 
      <Label Text="Header Content" FontSize="24" />   
      <ContentPresenter /> 
     </StackLayout> 
     </ControlTemplate> 
    </ResourceDictionary> 
    </Application.Resources> 
</Application> 

Übernehmen Sie die Control

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
       x:Class="Mobile.MainPage" 
       ControlTemplate="{StaticResource MainPageTemplate}"> 

    <Label Text="Main Page Content" FontSize="18" /> 

</ContentPage> 

Verwenden Template

<ControlTemplate x:Key="MainPageTemplate"> 
    <StackLayout> 
    <Label Text="{TemplateBinding BindingContext.HeadingText}" FontSize="24" />   
    <ContentPresenter /> 
    </StackLayout> 
</ControlTemplate> 

Hier ist die Blog

+0

Angenommen, in Control-Vorlage habe ich vier Bilder und auf Bild klicken, um zu einer anderen Seite zu navigieren, wo soll ich Code schreiben, der das Click-Ereignis in App.cs oder in der Content-Seite behandelt? – sandy

+0

Ich weiß nicht ... Ich denke auf die gleiche Weise, wie Sie an HeadingText binden, denke ich, dass Sie an einen Befehl binden können. –

0

Für diejenigen, die für diese noch auf der Suche sind.

Verwenden Sie ContentView zum Erstellen wiederverwendbarer XAML-Ansichten.

<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="xxx.FooterView"> 
    <ContentView.Content> 
     <RelativeLayout VerticalOptions="End" HorizontalOptions="Fill" HeightRequest="42" RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"> 
       <Label HeightRequest="42" VerticalTextAlignment="Center" Text="Copyright © 2017. All rights reserved." HorizontalTextAlignment="Center" RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}" /> 
      </RelativeLayout> 
    </ContentView.Content> 
</ContentView> 

und verwenden Sie es auf Ihrer Seite wie jede Steuer

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="xxx.Page1" xmlns:local="clr-namespace:xxx;assembly=xxx" > 
    <local:FooterView VerticalOptions="End" HeightRequest="45"/> 
//other views and layouts 
</ContentPage> 

Hoffe, es hilft.

Verwandte Themen