2017-09-18 4 views
0

페이지의 my .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는 으로 숨겨지며 목록에 표시되지 않습니다. 여기 내가 그런 나의 목록보기 만 헤드 라인과 ID를 결합하려면 어떻게 내가

  1. 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; } 
         } 
    

    질문을 내 모델을 사용하고있다

    다음
     <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> 
    

    아래의 코드 내 ID는 숨겨 지지만 헤드 라인이 목록보기에 표시됩니다

  2. 내 목록보기의 각 행을 클릭하면 관련된 ID를 전달할 수 있기 때문에 ID를 사용하여 내 목록에 다른 것을 쿼리 할 수 ​​있습니다. 어떻게해야합니까?

답변

0

표시하지 않을 경우 ID를 바인딩 할 필요가 없습니다. 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

관련 문제