C# ListView未绑定

C# ListView未绑定,c#,xaml,xamarin,C#,Xaml,Xamarin,当我运行应用程序时,我会得到两个标签(我使用的是标签页),但它们是空白的 我有一个有点复杂的ViewModel: public partial class NowPlayingView { const string NowPlayingUrl = "http://api.myserver.com"; public static List<MoviesItem> MoviesLst { get; set; } public NowPlaying

当我运行应用程序时,我会得到两个标签(我使用的是标签页),但它们是空白的

我有一个有点复杂的ViewModel:

        public partial class NowPlayingView
{
    const string NowPlayingUrl = "http://api.myserver.com";
    public static List<MoviesItem> MoviesLst { get; set; }

    public NowPlayingView()
    {
        InitializeComponent();
        BindingContext = new MoviesViewModel();
    }
    public class MoviesViewModel
    {
        public MoviesViewModel()
        {
            Action<Dictionary<string, string>> initAction = initialize;
            initAction(new Dictionary<string, string>()
                {
                    {"$format", "json"},
                    {"AccessKey", "f54tg5gf54g-fgs3452-324asdf4"},
                    {"CineplexLanguage", "en-us"}
                });
        }

        public async void initialize(Dictionary<string,string> parameters)
        {
            var data = await (new ApiUtilities().CallGetData<MoviesNowPlaying>(NowPlayingUrl, "/api.svc/MoviesNowPlaying", parameters));
            MoviesLst = data.d.results.Select(x => new MoviesItem() {Header = x.Title, Text = x.MediumPosterImageURL}).ToList();
        }
    }
    public class MoviesItem
    {
        public string Header { get; set; }
        public string Text { get; set; }
    }
}
public分部类NowPlayingView
{
常量字符串NowPlayingUrl=”http://api.myserver.com";
公共静态列表MoviesLst{get;set;}
public NowPlayingView()
{
初始化组件();
BindingContext=新的MoviesViewModel();
}
公共类电影视图模型
{
公共电影视图模型()
{
Action initAction=初始化;
initAction(新字典()
{
{“$format”,“json”},
{“AccessKey”、“f54tg5gf54g-fgs3452-324asdf4”},
{“电影语言”,“en-us”}
});
}
公共异步void初始化(字典参数)
{
var data=await(新的ApiUtilities().CallGetData(NowPlayingUrl,“/api.svc/MoviesNowPlaying”,参数));
MoviesLst=data.d.results.Select(x=>newMoviesItem(){Header=x.Title,Text=x.MediumPosterImageURL}).ToList();
}
}
公共类电影项目
{
公共字符串头{get;set;}
公共字符串文本{get;set;}
}
}
我的XAML文件如下所示:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                       x:Class="XamPlex.MainCategories.NowPlayingView"
             Title="Now Playing">
    <ListView x:Name="MoviesListView" RowHeight="80" BackgroundColor="Transparent" ItemsSource="{Binding MoviesLst}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <ViewCell.View>
                        <StackLayout Orientation="Vertical" Spacing="0" Padding="10">
                            <Label Font="Bold,20" Text="{Binding Header}" TextColor="Indigo"/>
                            <Label Font="16" Text="{Binding Text}" TextColor="Indigo"/>
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>


我检查了MoviesLst的内容,它包含了大量的数据,有什么想法可能是错误的吗?

我没有做很多MVC,但我相信视图应该有以下形式:

public ActionResult Index() {
    return View();
}
我认为你的观点应该是这样的

public ActionResult Index() {
    var data = await (new ApiUtilities().CallGetData<MoviesNowPlaying>(NowPlayingUrl, "/api.svc/MoviesNowPlaying", parameters));
    var list = data.d.results.Select(x => new MoviesItem() {Header = x.Title, Text = x.MediumPosterImageURL}).ToList();
    return View(list);
}
public ActionResult Index(){
var data=await(新的ApiUtilities().CallGetData(NowPlayingUrl,“/api.svc/MoviesNowPlaying”,参数));
var list=data.d.results.Select(x=>newMoviesItem(){Header=x.Title,Text=x.MediumPosterImageURL}).ToList();
返回视图(列表);
}
不过,我只学习了MVC的基本教程。我可能误解了你的模型


我看不到你在哪里发布你的观点。我看到的似乎是模型。

BindingSource
听起来像是这里的问题。检查此链接您正在异步填充ViewModel,因此在创建绑定时,其中没有数据。将列表更改为ObservableCollection-这将允许它在填充数据时通知视图进行更新。