2017-05-26 20 views
2

ListViewに選択した項目のインデックス番号を表示したいのですが、現在のコードではitem_codeが表示されていますが、ListViewにインデックス番号を表示したいと思います。選択しているアイテムのインデックス番号を取得するにはどうすればよいですか?

私は.cs

lstView.ItemsSource = _sqLiteConnection.Table<ItemModel>();  
lstView.ItemSelected += async (sender, e) =>   
{    
    await DisplayAlert("Selected ",((ItemModel)e.SelectedItem).item_code 
    + " was selected.", "OK");      
}; 

マイxaml.cs

<ListView x:Name="lstView"> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <ViewCell > 
     <StackLayout Orientation="Vertical" > 
      <Label Text="{Binding item_desc}" /> 
      <Label Text="{Binding selling_price}" /> 

     </StackLayout> 
     </ViewCell> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

ビューモデル

public class ItemModel 
{ 

    public string cost_method { get; set; } 
    public string item_code { get; set; } 
    public string item_desc { get; set; } 
    public string item_group_desc { get; set; } 
    public long item_id { get; set; } 
    public string stock_item { get; set; } 
    public string trnx_unit { get; set; } 
    public decimal selling_price { get; set; } 
} 
+2

'lstView.Items.IndexOf(e.SelectedItem)'? –

+0

これを試しましたが、うまくいきません。 –

+0

@PaulJosephDarSantos 'varインデックス=(リストとしてlstView.ItemsSource).IndexOf(ItemModelとしてe.SelectedItem);'? – Hexie

答えて

0

この質問はすでにの一つができ、いくつかのスレッドで回答されていますここにある:

Xamarin Forms - Get position of item selected in Listview

答えの短い抜粋(上記記事にクレジット):

var index = (myListView.ItemsSource as List<MyObject>).IndexOf (e.SelectedItem as MyObject); 
0
public Class Students 
{ 
     public int sid { get; set; } 
     public string Name { get; set; } 
} 

listview.ItemSelected += Lst_ItemSelected; 

private void Lst_ItemSelected(object sender, SelectedItemChangedEventArgs e) 
    { 
     var index = (listview.ItemsSource as List<Students>).IndexOf(e.SelectedItem as Students); // to get a index value or postion value 

     ((ListView)sender).SelectedItem = null; 

    } 
関連する問題