Xamarin.Forms.Pages.ListDataPage不从AzureEasyTableSource加载数据

时间:2016-12-12 05:36:20

标签: c# xamarin xamarin.forms azure-mobile-services

我正在尝试使用当前处于预览状态的新 Xamarin.Forms.Pages.ListDataPage 控件。

我已按照入门页面Getting Started with DataPages上的说明设置 AzureEasyTableSource 。 该应用程序编译并运行,但this.DataSource.Data.Count始终在iOS和Android上返回0。

Bellow是Views XAML

<?xml version="1.0" encoding="UTF-8"?>
<p:ListDataPage xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:local="clr-namespace:Sparrow" 
    xmlns:azure="clr-namespace:Xamarin.Forms.Pages.Azure;assembly=Xamarin.Forms.Pages.Azure" 
    xmlns:p="clr-namespace:Xamarin.Forms.Pages;assembly=Xamarin.Forms.Pages" 
    x:Class="Sparrow.NewsPage" StyleClass="Event" Title="News" BindingContext="This">

<p:ListDataPage.DataSource>
    <azure:AzureDataSource>
        <azure:AzureDataSource.Source>
            <azure:AzureEasyTableSource TableName="NewsItem" 
                                        Uri="https://<<AppName>>.azurewebsites.net"/>
            </azure:AzureDataSource.Source>
        </azure:AzureDataSource>
     </p:ListDataPage.DataSource>


    <p:ListDataPage.DefaultItemTemplate>
    <DataTemplate>
        <ViewCell>
            <p:ListItemControl
               Title="{ Binding Value[headline] }"
                Detail="{ Binding Value[newsBody] }"
                DataSource="{ Binding Value }"
                HeightRequest="30"
            />

        </ViewCell>
    </DataTemplate>
</p:ListDataPage.DefaultItemTemplate>
</p:ListDataPage>

Wireshark捕获和App Service流日志显示服务器正在接收并响应请求,但应用程序无法处理数据。

1 个答案:

答案 0 :(得分:0)

看起来你的数据绑定可能是一个问题,因为它们应该与进来的值相对应,需要特殊的语法。以下是我的OCR示例中的一个示例:https://github.com/jamesmontemagno/app-ocr-functions

 <p:CardView
          Margin="10"
            Text="Total Amount from OCR:"
            Detail="{p:DataSourceBinding Total}"
            ImageSource="{p:DataSourceBinding Url}"
            DataSource="{Binding Value}"
            HeightRequest="250"/>
        </ViewCell>

您必须使用p:DataSourceBinding来命名它。