2017-08-03 8 views
2

私は別のビューに渡すべきオブジェクトのリストを持っていますが、私はXamarin.formsでそれをどうやって行うことができないのですか?setBindingを使うべきだと思います。 ありがとうございます。ページ間のリストを渡す方法xamarin.forms?

List<Localizacao> localizacaoList = new List<Localizacao>(); ; 
     if (localizacao != null && lojaPerto != null) 
     { 
      localizacaoList = new List<Localizacao>(); 
      Localizacao loc = new Localizacao(); 
      loc.latitude = Double.Parse(lojaPerto.latitude); 
      loc.longitude = Double.Parse(lojaPerto.longitude); 
      localizacaoList.Add(loc); 
      localizacaoList.Add(localizacao); 
     } 

     var secondPage = new Views.ComoChegarView(); 
     secondPage.BindingContext = localizacaoList; 
     await Navigation.PushAsync(secondPage); 

は実際には、私が送信されていますが、多分あなたは、コンストラクタのパラメータを使用して試すことができ、任意の追加的なフレームワークを使用していない場合、私は他のビュー

答えて

0

で再びそれを得ることができません。

public partial class ComoChegarView 
{ 
    ... 
    private List<Localizacao> Locals{get;set;}  

    public ComoChegarView(List<Localizacao> locals) 
    { 
     InitializeComponent(); //standard code that mix xaml and code behind 
     this.Locals = locals; //store the data in property 
     this.BindingContext = this; //Set the binding context 
    } 

} 

したがって、ページを作成するときに値を渡すことができます。

List<Localizacao> localizacaoList = new List<Localizacao>(); ; 
if (localizacao != null && lojaPerto != null) 
{ 
    localizacaoList = new List<Localizacao>(); 
    Localizacao loc = new Localizacao(); 
    loc.latitude = Double.Parse(lojaPerto.latitude); 
    loc.longitude = Double.Parse(lojaPerto.longitude); 
    localizacaoList.Add(loc); 
    localizacaoList.Add(localizacao); 
} 

var secondPage = new Views.ComoChegarView (localizacaoList); 
await Navigation.PushAsync(secondPage); 

何を達成したいことは完全にすべての深刻なMVVMライブラリによってサポートされているあなたは、(例えば)プロパティへのアクセスを反映するために、XAMLでバインディング

<ListView ItemsSource="{Binding Locals}">...</ListView> 
+0

私はできません...私は文字列、intクラスなど...できますが、私のクラスLocalizacao、または私が作成したもので、エラーが表示されます...しかし、ありがとうございます。 –

+0

@JoycedeLanna何が表示されますか? –

+0

一貫性のないアクセス可能性。パラメータの型はメソッドよりもアクセスしにくい –

0

をその更新を忘れないでください。 1)ビューが別のビューに何も渡さない、それはViewModelsの仕事です 2)MVVMコンテキストでは、1つのViewModelから別のViewModelへのou passデータを送信するために多くのテクニックを使用できます。 Xamarin.Formsには1つのインクルードがあります)、ViewModelコンストラクタの依存性注入(Unity、DryIocなどを使用して、ほとんどのMVVMライブラリが提供しているIoCコンテナを使用します)。 MVVMパターンをマスターしていないのは確かに難しいですが、このパターンといくつかのライブラリをPrismとして勉強するのに少し時間を取らなければなりません。このようなアプローチの利点をすぐに見て、より効率的にコードを書くことが非常にうれしくなります(そして、あなたがここで話しているような問題への迅速できれいな解決策を見つけることができます)。

関連する問題