2016-09-26 6 views
1

ListView要素のItemSelected()イベントに関する質問があります。以下に構成されているPlaceItemsの配列を取得しますxamarin.forms ListView ItemSelected

<ListView.ItemTemplate> 
    <DataTemplate> 
     <ViewCell> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="0.5*"/> 
        <ColumnDefinition Width="0.5*"/> 
       </Grid.ColumnDefinitions> 
       <Label Text="{Binding Name}" FontAttributes="Bold" /> 
       <Button Text="More" Clicked="MoreInfo" c="{Binding Name}"/> 
      </Grid> 
     </ViewCell> 
    </DataTemplate> 
</ListView.ItemTemplate> 

私のListViewのは、このようなDataTemplateに基づいています。

private PlaceItem[] places = { 
    new PlaceItem("Theo's huis"), 
    new PlaceItem("Kerk op de berg"), 
    new PlaceItem("Hostel Stay Okay") 
}; 

public class PlaceItem 
    { 
     public PlaceItem(string Name, double Lat = 0.0, double Lng = 0.0) 
     { 
      this.Name = Name; 
      this.Lat = Lat; 
      this.Lng = Lng; 
     } 

     public string Name { get; set; } 
     public string Location { get; set; } 
     public double Lat { get; set; } 
     public double Lng { get; set; } 
    } 

この私のSelectedItemである()メソッド:

placesListView.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => 
{ 
    DisplayAlert("ItemSelected", e.SelectedItem.ToString(), "Ok"); 
}; 

私はそれは常にKK2が私の名前空間である文字列 "KK2.PlaceItem" と警告する項目を選択します。 ListView ItemからItemSelectedイベントにデータを送信するにはどうすればいいですか? Array内でアイテムインデックスを送信するか、オブジェクトからLatまたはLngプロパティを送信することができます。

この問題を解決するのに十分な情報を教えていただきたいと思います。 Xamarinは私のために新しいですが、私はそれを学びたいです。

ありがとうございます。

テオ

答えて

3
placesListView.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => 
{ 
    var item = (PlaceItem) e.SelectedItem; 

    // now you can reference item.Name, item.Location, etc 

    DisplayAlert("ItemSelected", item.Name, "Ok"); 
}; 
+0

あなたは英雄です、それが動作します。しかし、それは何の構文ですか、それは何ですか? –

+0

(type)はC#明示的キャストです。これはSystem.Objectであるe.SelectedItemをとり、それをPlaceItemオブジェクトにキャストします。 – Jason

関連する問題