2017-02-20 10 views
1

Ich möchte es auf meinem Eintrag anzeigen, was nicht passiert ist, wenn ich ein View Model mit Messaging-Center verwenden wird es nicht angezeigt, sag mir, was ich falsch mache was sollte ich tun müssen. Ich denke, der Eintrag kann den Wert im Messaging Center nicht finden.xamarin.forms - Messaging Center Pass Daten zum Eintrag

<?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="Data1.Views.Page1"> 
     <ContentPage.Content> 
     <ListView x:Name = "lstView" ItemTapped="OnItemTapped" /> 
     </ContentPage.Content> 
    </ContentPage> 

    public partial class Page1 : ContentPage 
    { 
     public Page1() 
     { 
      InitializeComponent(); 
      lstView.ItemsSource = new List<string>() { "Vegetables", "Fruits", "Flower Buds", "Legumes", "Bulbs", "Tubers" }; 
     } 
     void OnItemTapped(object sender, ItemTappedEventArgs e) 
     { 
      if (e == null) return; // has been set to null, do not 'process' tapped event 
      Debug.WriteLine(e.Item); 
      ((ListView)sender).SelectedItem = null; // de-select the row 
      var person = new Person 
      { 
       Name = e.Item.ToString() 
      }; 
      MessagingCenter.Send<Page1, string>(this, "Hi", e.Item.ToString()); 
      Navigation.PushModalAsync(new Page2()); 
     } 
    } 

    public partial class Page2 : ContentPage 
    { 
     public Page2() 
     { 
      InitializeComponent(); 

      MessagingCenter.Subscribe<Page1, string>(this, "Hi", (sender, arg) => 
      { 
       txttest.Text = arg; 
      }); 
     } 
    } 
+0

Du schickst die Nachricht vor dem Page2 erstellt wurde, tut sie dies nicht existieren noch, um die Nachricht zu erhalten. MessagingCenter stellt keine Nachrichten für die zukünftige Zustellung bereit. In diesem Szenario wäre es viel einfacher, den Wert als Parameter an den Konstruktor von Page2 zu übergeben. – Jason

+0

Auch wenn ich das benutze und an den Eintrag immer noch nichts anbinde: public class MainViewModel { public Person Person {get; einstellen; } öffentlichen MainViewModel() { MessagingCenter.Subscribe (this, "Hallo", (Absender, arg) => { Person = new Person { Name = arg }; }) ; } } –

+0

ohne diesen Code im Kontext zu sehen Ich kann nicht sagen, ob es die Probleme anspricht, die ich erwähnte oder nicht. – Jason

Antwort

-1

pls

MessagingCenter.Send<Page1, string>(this, "Hi", e.Item.ToString()); 
Navigation.PushModalAsync(new Page2()); 

Änderungslinie und

Navigation.PushModalAsync(new Page2()); 
MessagingCenter.Send<Page1, string>(this, "Hi", e.Item.ToString()); 

vielleicht versuchen, es funktioniert es