2016-08-03 24 views
1

Ich benutze Xamarin Forms und möchte die Details eines Elements anzeigen, nachdem ich es in meiner Listenansicht angeklickt habe. Es öffnet sich eine neue Ansicht mit dem Detail. Ich weiß nicht, wie man ein ganzes Objekt an eine Ansicht bindet, um seine Eigenschaften einfach zu verwenden.Xamarin Forms kann nicht finden, wie man ein Objekt mit einer Detailansicht bindet

Hier ist mein Code:

public partial class ContactDetailPage : ContentPage 
     { 
      public ContactDetailPage(Agency agencyItem) 
      { 
       InitializeComponent(); 
       // The agencyItem is get from a list view 
       // HERE I suppose I need to bind the agencyItem to the view ? 
      } 
     } 

meine Detailansicht Hier ist eine Agentur anzuzeigen:

<?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="Project.ContactDetailPage"> 
    <ContentPage.Content> 
      <StackLayout Spacing="0"> 
       <Label Text="{Binding agency.name}" FontSize="Micro" LineBreakMode="TailTruncation" /> 
       <Label Text="{Binding agency.address}" FontSize="Micro" LineBreakMode="TailTruncation" /> 
      </StackLayout> 

    </ContentPage.Content> 
</ContentPage> 

Wie kann ich den Blick auf die agencyItem binden, um sie anzuzeigen?

Antwort

2

Chec k die Xamarin documentation auf diesem.

Kurze Antwort ist:

BindingContext = agencyItem;

BindingContext eine Eigenschaft auf jedem Page ist die Pflege von Bindungen und so nimmt. Beachten Sie, dass Sie <Label Text="{Binding agency.name}" ... /> nicht benötigen, wenn der Name direkt in agencyItem ist. Sie können einfach <Label Text="{Binding name}" ... /> direkt verwenden. Beginne also mit dem Root-Objekt. Wenn Ihr agencyItem eine String Eigenschaft Name hat, verwenden Sie einfach Name direkt. Wenn die agencyItem eine komplexe Eigenschaft Agency hat, die eine String Eigenschaft Name hat, dann ist Ihre aktuelle Bindung korrekt.

Sie könnten auch wählen, es in XAML zu tun. Dann müssten Sie eine Eigenschaft erstellen und die INotifyPropertyChanged-Schnittstelle implementieren.

Ich merke auch, dass Sie nicht ein Muster wie MVVM verwenden. Das könnte sich auch sehen lassen!

+0

Wie sieht es mit einem MVVM-Muster aus? Es ist ein sehr einfacher Fall, nein? – fandro

+0

Wahr! Wenn es keinen Anwendungsfall dafür gibt, tun Sie es nicht! Ich habe mich nur gefragt, ob Sie wüssten, ob es überhaupt existiert;) Es kann sogar in einem kleinen Projekt Vorteile bringen. Und natürlich bin ich zuversichtlich, dass Ihr Projekt sehr schnell wachsen wird! –

+1

ok danke, ich lerne es Ich bin neu zu C# Vielen Dank – fandro