2017-09-18 44 views
0

我在页面的.cs文件的构造函数中具有以下代码。我能拉 数据没有问题将数据绑定到列表视图并隐藏字段

void InitData() 
      { 
       ArticlesService objArtServ = new ArticlesService(); 
       Task<List<ArticlesModel>> dataRetrieved = objArtServ.GetValues("News"); 

       //Bind headlines and Id to listview but hide Id 
       // datalist.itemsource = ? 

      } 

这里是我返回的数据没有任何问题的服务。

public class ArticlesService 
     { 
      HttpClient client; 

      public async Task<List<ArticlesModel>> GetValues(string category){ 
       client = new HttpClient(); 
       var response = await client.GetStringAsync("http://testing-dev.com/Api/Articles/DefaultArticles/" + category); 
       var articlesModel = JsonConvert.DeserializeObject<List<ArticlesModel>>(response); 
       return articlesModel; 
      } 

     } 

我有这个主要页面上的网格和列表视图,将列出从我的模型和Id的头条新闻。该ID将被隐藏 而不会显示在列表中。 这里是低于

 <StackLayout Grid.Column="1" Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Padding="0" Spacing="0"> 
         <SearchBar x:Name="searchBar" Placeholder="Search" SearchCommandParameter="{Binding Source={x:Reference searchBar}, Path=Text}"/> 
         <StackLayout VerticalOptions="FillAndExpand"> 
          <StackLayout VerticalOptions="FillAndExpand" Padding="1" BackgroundColor="Black"> 
           <ListView x:Name="dataList" BackgroundColor="White"> 
            <ListView.ItemTemplate> 
             <DataTemplate> 
              <ViewCell> 
               <Label FontSize="20" VerticalOptions="CenterAndExpand" TextColor="Black" Text="{Binding HeadLines}"></Label> 
              </ViewCell> 
             </DataTemplate> 
            </ListView.ItemTemplate> 
           </ListView> 
          </StackLayout> 
         </StackLayout> 
        </StackLayout> 

下面的代码是我的模型,我使用

public class ArticlesModel 
     { 
      public Int32 Id { get; set; } 
      public string HeadLines { get; set; } 
      public string Url { get; set; } 
      public string Category { get; set; } 
      public string Summary { get; set; } 
     } 

问题

  1. 如何绑定只有标题和编号到我的列表视图,使得我Id将被隐藏,但标题将显示在列表视图中

  2. 点击我的listview中的每一行,我希望能够传递关联的ID,这样我就可以使用ID来查询我的列表中的其他内容。 我该如何做到这一点?

回答

0

如果不显示它,则不需要绑定标识。 ItemSelected事件将为您传递被点击的行的完整ArticlesModel对象,并且您可以轻松地从模型中获取ID。

dataList.ItemSelected += (s,e) { 

    if (e.SelectedItem == null) return; 

    // item will be a pointer to the selected ArticlesModel object 
    var item = (ArticlesModel)e.SelectedItem; 

    // then you can use item.Id or any other property on ArticlesModel 
}; 
+0

您是否有一些代码示例? – user2320476

+0

我需要所选行的ID。 – user2320476

+0

看我上面的编辑 – Jason