Xamarin ViewCell包含另一个ListView?

时间:2016-02-26 08:40:37

标签: xaml data-binding xamarin xamarin.forms

在XAML设置Xamarin的BindingContext中尝试数据绑定时,我无法让我的模型出现......这是我的简化模型代码:

public class LeagueRootObject
{
    public League League { get; set; }
    public ObservableCollection<Match> Matches { get; set; }
    public object Error { get; set; }
}

public class League
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public DateTime PlayingDate { get; set; }
}

public class Match
{
    public MatchDetail MatchDetail { get; set; }
    public ObservableCollection<Player> Players { get; set; }
}

public class MatchDetail
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
}

public class Player
{
    public PlayerDetail PlayerDetail { get; set; }
    public object Rating { get; set; }
    public int MatchPlayerId { get; set; }
}

public class PlayerDetail
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

这里是简化的XAML片段:

<ListView ItemsSource="{Binding Path=Matches}" VerticalOptions="StartAndExpand">
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <ViewCell.View>
          <StackLayout Orientation="Vertical">
            <Label Text="{Binding Path=MatchDetail.Name}"/>
            <ListView ItemsSource="{Binding Path=Players}">
              <ListView.ItemTemplate>
                <DataTemplate>
                  <TextCell Text="{Binding Path=PlayerDetail.FirstName}"/>
                  <!-- another ViewCell here seems to hide data somehow -->
                </DataTemplate>
              </ListView.ItemTemplate>
            </ListView>
          </StackLayout>
        </ViewCell.View>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

放置在Xamarin StackLayout的根ContentPage元素中,其BindingContext设置为从json正确加载的LeagueRootObject实例(我已检查过)在调试器中工作)。

上面的XAML代码是我能够做到的最好的事情,因为在内部Label的{​​{1}} StackLayout中包含的ListView内添加了ViewCell正确显示...如何向内部ViewCell添加ListView(或任何其他类型的单元格)并构建其View以便它可以显示所有属于所有内部集合对象的数据(我目前只有第一个出现,当有多个玩家时出现问题)...我做错了什么,应该是ListView不是那样使用,并且有一些其他'View`控件用于外部对象,我想要的是以某种方式显示所有内部对象分组在外部对象中...

由于

2 个答案:

答案 0 :(得分:0)

除了我可能在Xamarin风格的XAML上表现不佳之外,你也可能对listviews的工作方式存在错误...因为我刚刚在Windows 10手机上试过上面的代码而且它不会显示任何内容内部集合的数据,但在Android上运行它通过显示多个内部集合姓氏...并在向下滚动到该外部集合对象后,它将使应用程序崩溃。

所以,这可能不是通过属于外部集合注释来显示这样的内部对象列表(以及每个对象旁边的按钮操作)的方法,但我仍然找不到另一个示例XAML。

难道你只能在Xamarin.Forms 2.0中使用foreach循环代码吗?

答案 1 :(得分:0)

如果我正确理解了您的问题,我可以建议您帮助我在ListView中显示ListView的解决方案。

https://stackoverflow.com/a/35598179/5912513