0

Ich mache eine App, die auf jedem Bildschirm die gleiche Kopfzeile hat, also habe ich eine ControlTemplate für diesen Teil der App erstellt, einige Tasten darauf und das funktioniert. Ich bin ziemlich glücklich damit.Xamarin bildet ControlTemplate für Kopfzeile, andere für Fußzeile und Bindungen

Drei Bildschirme haben fast identische Fußzeile, nur unterschiedliche Textfarbe und Bilder. Ich habe ein anderes ControlTemplate für die Fußzeile erstellt, und ich möchte die IsVisible-Eigenschaft für die Bilder mit Bindungen entsprechend der aktuell angezeigten Seite ändern, aber ich bin nicht in der Lage, herauszufinden, wie das geht.

Ich weiß, dass ich einen Konverter schreiben muss, ich tat das, das scheint nicht kompliziert zu sein, aber ich kann keinen Weg finden, die Werte in diesen Eigenschaften tatsächlich zu binden.

Beide ControlTemplates werden auf Anwendungsebene definiert.

Dies ist ein Beispiel dafür, wie ich sie benutzen, vielleicht ist dies falsch:

<ContentView ControlTemplate="{StaticResource Header}"> 
<!--This is the actuall page content--> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="9*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
    <!--Content of the page!--> 
<Label Text="Welcome to Xamarin.Forms!" 
     VerticalOptions="Center" 
     HorizontalOptions="Center" 
     Grid.Row="0"/> 
<!--Footer of the page!--> 
    <ContentView ControlTemplate="{StaticResource BuySellPayFooter}" 
          Grid.Row="1"/> 
    </Grid> 
</ContentView> 

Ich brauche Eigenschaften einer Klasse in der Fußzeile zu binden. Wie es geht? Ist es erreichbar?

Antwort

0

Ich verwende ControlTemplate, um einen ActivityIndicator auf jeder Seite anzuzeigen.

Für Eigenschaft IsVisible des Indikators, ich binde es mit der Eigenschaft IsBusy der Seite.

Und das ist, wie ich es in der XAML des Control binden:

IsVisible="{TemplateBinding BindingContext.IsBusy}" 

Wenn ich die Farbe des Indikators auf jeder Seite ändern möchte, kann ich BusyColor Eigenschaft für die Seite und die Bindung es definieren :

Color="{TemplateBinding BindingContext.BusyColor}" 
Verwandte Themen