【问题标题】:Binding data from JSON object to ListView inside Hub section将数据从 JSON 对象绑定到 Hub 部分内的 ListView
【发布时间】:2016-03-16 10:21:41
【问题描述】:

在反序列化后,我能够成功地将 JSON 中的数据绑定到列表视图,但在绑定到 Hub/HubSection 内的同一列表视图时遇到问题。

使用 ItemData.ItemsSource = obj;我能够将数据绑定到列表视图。当 listview 放置在 hubsection 内时,如何绑定和显示数据?

我的 MainPage.xaml Hub 代码

<Hub x:Name="MainHub" Header="My Hub">
        <HubSection x:Name="Test" Header="Online">
            <DataTemplate>
                <Grid>
         <ListView Name="ItemData">
         <ListView.ItemContainerStyle>
         <Style TargetType="ListViewItem">
         <Setter Property="HorizontalContentAlignment" Value="Stretch" />
         </Style>
         </ListView.ItemContainerStyle>
         <ListView.ItemTemplate>
         <DataTemplate>
         <Grid>
         <TextBlock Text="{Binding name}" FontSize="24"/>
         </Grid>
         </DataTemplate>
         </ListView.ItemTemplate>
         </ListView>
                </Grid>
            </DataTemplate>
        </HubSection>
    </Hub>

MainPage.xaml.cs

public async void GetOnline()
    {
        Uri uri = new Uri("http://mywebsite.com");
        Dictionary<string, string> pairs = new Dictionary<string, string>();
        pairs.Add("id", CourseID.ToString());
        HttpClient client = new HttpClient();
        HttpFormUrlEncodedContent formContent = new    HttpFormUrlEncodedContent(pairs);
        HttpResponseMessage response = await client.PostAsync(uri,formContent);
        List<string> CName = new List<string>();
        if (response.IsSuccessStatusCode)
        {
            var result = await response.Content.ReadAsStringAsync();
            var obj = JsonConvert.DeserializeObject<List<RootObject>>(result);
            for (int i = 0; i < obj.LongCount(); i++)
            {
                CName.Add(obj[i].name);
            }
            //ItemData.ItemsSource = obj;
            //MainHub.DataContext = obj;
        }
    }

    public class RootObject
    {
        public int id { get; set; }
        public string name { get; set; }
    }

编辑 1:

我现在可以检索数据了。编辑的 XAML 代码

 <Hub x:Name="MainHub" Header="My Hub">
 <HubSection x:Name="Test" Header="Online">
 <DataTemplate>
 <Grid>
 <ListView Name="ItemData"  ItemsSource="{Binding}"></ListView>
 </Grid>
 </DataTemplate>
 </HubSection>
 </Hub>

代码隐藏 -

 Test.DataContext = CName;

这是将数据绑定到集线器部分内的列表视图的正确方法吗?

【问题讨论】:

    标签: c# json listview windows-phone-8.1


    【解决方案1】:

    删除 hubsection 的 DataTemplate 标记,然后它应该可以工作。

    【讨论】:

    • 集线器标签?我想在集线器内显示列表视图。
    • 移除hubsection下不在listview内的datatemplate标签
    • 是的,我已经编辑了第一篇文章并添加了工作代码。谢谢顺便说一句:)
    猜你喜欢
    • 2015-02-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多