2017-06-21 16 views
0

(2)
1)アプリはREST、JSONのWebサービス
2を呼び出して動的にした後、このシナリオを処理する方法にとして見当もつかないボタンやデータを保存するために生成する方法)JSONレスポンスをデシリアライズ
3)リストビューにデータをバインドする
動的GridLayoutには

以下は実際の例です。

問題:レコードの各行にボタンを追加する必要があります。例、Johnny Deppの隣にボタンを追加する方法このボタンにEventHandlerを追加しますか?

これは、XAMLを動的に生成する必要があることを意味しますか?どのようにバインドする?

enter image description here

here to code to handle the Returned Json Result: 

    -- Model: 

    public class Phone 
     { 
      public string mobile { get; set; } 
      public string home { get; set; } 
      public string office { get; set; } 
     } 

     public class Contact 
     { 
      public string id { get; set; } 
      public string name { get; set; } 
      public string email { get; set; } 
      public string address { get; set; } 
      public string gender { get; set; } 
      public Phone phone { get; set; } 
     } 

     public class ContactList 
     { 
      public List<Contact> contacts { get; set; } 
     } 


---- Call REST 
var client = new System.Net.Http.HttpClient();     
var response = await client.GetAsync("http://Rest api");     
string contactsJson = response.Content.ReadAsStringAsync().Result;     
ContactList ObjContactList = new ContactList(); 

if (contactsJson != "")   
{   
ObjContactList = JsonConvert.DeserializeObject<ContactList>(contactsJson); 

} 
listviewConacts.ItemsSource = ObjContactList.contacts; 



    ------XAML: 

    <Grid> 
     <Grid> 
     <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 

      <Label Grid.Row="0" Margin="10" Text="Display Json Data" FontSize="25" /> 

      <ListView x:Name="listviewConacts" Grid.Row="1" HorizontalOptions="FillAndExpand" HasUnevenRows="True" ItemSelected="listviewContacts_ItemSelected"> 

      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
        <Grid HorizontalOptions="FillAndExpand" Padding="10"> 
         <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="Auto"/> 
        </Grid.RowDefinitions> 
       <Label Text="{Binding name}" HorizontalOptions="StartAndExpand" Grid.Row="0" TextColor="Blue" FontAttributes="Bold"/> 
       <Label Text="{Binding email}" HorizontalOptions="StartAndExpand" Grid.Row="1" TextColor="Orange" FontAttributes="Bold"/> 
       <Label Text="{Binding phone.mobile}" HorizontalOptions="StartAndExpand" Grid.Row="2" TextColor="Gray" FontAttributes="Bold"/> 

       <BoxView HeightRequest="2" Margin="0,10,10,0" BackgroundColor="Gray" Grid.Row="3" HorizontalOptions="FillAndExpand" /> 
        </Grid> 
       </ViewCell> 

      </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </Grid> 
     <ActivityIndicator x:Name="ProgressLoader" IsRunning="True"/> 
    </Grid> 

あなたは既にカスタムセルを作成したおかげ

答えて

0

、コマンドおよびCommandParameterでそれにボタンを追加します。あなたのviewcellグリッド内部

public Command TapCommand 
     { 
      get 
      { 
       return new Command((obj) => 
       { 
        //obj here will be your data record 
       }); 
      } 
     } 
+0

が言うあなたのモデルに続いて

<Button Text="Toggle" Command="{Binding Source={x:Reference YourPage}, Path=BindingContext.TapCommand}" CommandParameter="{Binding}"/> 

を追加し、私はポップアップを起動したり、別のページに移動するボタンを必要としています。このボタンはJohnny DeppデータをPopUpまたはNext Pageを編集に渡します。私の事例に基づいてどのように私に見せてもらえますか? – MilkBottle

+0

編集した私の答え –

+0

それはあなたのために働いたのですか? –