【问题标题】:Can't binding ObservableCollection to ListView by MVVMMVVM 无法将 ObservableCollection 绑定到 ListView
【发布时间】:2017-09-12 13:47:39
【问题描述】:

在 Xamarin Form 上,有行数据但没有内容,并且只显示一行并且为空。

在模型中:

 public class Item
    {
        public string kind { get; set; }
        public string etag { get; set; }
        public string id { get; set; }
        public Snippet snippet { get; set; }
        public ContentDetails contentDetails { get; set; }
        public Status status { get; set; }
        public Statistics statistics { get; set; }
    }

    public class RootObject
    {
        public string kind { get; set; }
        public string etag { get; set; }
        public string nextPageToken { get; set; }
        public PageInfo pageInfo { get; set; }
        public List<Item> items { get; set; }
    }

在视图模型中

private ObservableCollection<TrendingModel.RootObject> _trendingRoots;
    private readonly ITrendingService _trendingService;


    public ObservableCollection<TrendingModel.RootObject> TrendingRoots
    {
        get { return _trendingRoots; }
        set
        {
            _trendingRoots = value;
            RaiseProtertyChanged(()=>TrendingRoots);
        }
    }

......

TrendingRoots = new ObservableCollection<TrendingModel.RootObject>(ridesResult);

结果是'TredingRoots' -> TrendinRoot[0].items[i].sn-p..... 在视图中,列表视图:

 <ListView x:Name="lstHome" ItemsSource="{Binding TrendingRoots}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout
                           Orientation="Horizontal">

                        <Image 
                               Source="{Binding items.snippet.thumbnails.medium}"
                               Aspect="AspectFit"
                               WidthRequest="220"
                               HeightRequest="220"
                               HorizontalOptions="Center"
                               VerticalOptions="Center" />
                        <Label 
                               Text="{Binding items.snippet.title}"
                               HorizontalOptions="Center"
                               VerticalOptions="Center">

                        </Label>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

最终结果是listview有1个item,这个item是空的,在while中,

  • 结果必须有 15 项。
  • 在listview item上显示每个item(当前为空,无法绑定)

【问题讨论】:

  • 请提供一些附加信息。目前尚不清楚您想要实现什么。
  • 您的 ItemSource 应该是您的 RootObject 的 items 属性,而不是 RootObjects 的集合
  • 已更新。数据为 15 项,但无法绑定到 listview。
  • 问题是您在 ItemTemplate 中的绑定:{Binding items.snippet.title}items 是一个列表,无法将列表项绑定到单个文本元素。如果要显示所有项目,则必须在 ItemTemplate 中实现另一个 ListView。
  • @Jason 所以它没有

标签: c# xamarin mvvm xamarin.forms


【解决方案1】:
<ListView x:Name="lstHome" ItemsSource="{Binding TrendingRoots[0].items}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout
                       Orientation="Horizontal">

                    <Image 
                           Source="{Binding  snippet.thumbnails.medium}"
                           Aspect="AspectFit"
                           WidthRequest="220"
                           HeightRequest="220"
                           HorizontalOptions="Center"
                           VerticalOptions="Center" />
                    <Label 
                           Text="{Binding snippet.title}"
                           HorizontalOptions="Center"
                           VerticalOptions="Center">

                    </Label>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 2016-08-05
    • 2011-06-20
    • 2012-05-26
    • 2018-05-21
    • 2016-04-25
    • 1970-01-01
    相关资源
    最近更新 更多