2017-08-03 91 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); 

请记住,你的更新在XAML结合,以反映属性访问(例如)

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

我不能这样做......我可以用字符串,int类...等......但是用我的课Localizacao或其他我创建的,出现错误...但是,谢谢 –

+0

@JoycedeLanna出现什么错误? –

+0

不一致的可访问性;参数类型比方法 –

0

你想要达到完美的一切严重MVVM库支持什么。 2)在MVVM上下文中,您可以使用许多技术将数据从一个ViewModel发送到另一个ViewModel,主要是:MVVM messenger(有一个包含在Xamarin.Forms中)或依赖注入ViewModel构造函数中(使用IoC容器,大多数MVVM库提供,使用Unity,DryIoc ...)。 如果你不掌握MVVM模式,这当然很难做,但你应该花一点时间研究这种模式和一些图书馆作为棱镜。您将很快看到这种方法的好处,并且会更高效地编写代码(并在一分钟内快速找到干净的解决方案,以解决您在此讨论的问题),非常高兴。