###実現したいこと
Xamarin初心者です。
Xamarin.FormsでListViewがタップされた場合、どの項目が選択されたかを変数に入れた後、確認するプログラムを書きたいのですが、どのように書けばいいですか?
自身がよくXAMLについて分かっていないので、できればXAMLは使わず、C#だけで書きたいです。
###追記
皆さま丁寧にご回答いただきありがとうございます。
どの回答も丁寧にされていたのですが、その中でもTak1waさんの回答が自身一番わかりやすかったので、ベストアンサーとしました。
皆さまこれらからもよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
こんにちは。
質問者さんがMVVMを導入しているのかはわからないので、
コードビハインドで取得する方法も載せておきます。
いくつかListViewで選択時のイベントがあると思うんですが、それをハンドルするとイベント引数に選択項目が格納されていたりします。
C#
1public partial class MainPage : ContentPage 2{ 3 public MainPage() 4 { 5 //InitializeComponent(); 6 var list = new ListView 7 { 8 ItemsSource = new string[] 9 { 10 "AAA", "BBB", "CCC" 11 } 12 }; 13 list.ItemTapped += List_ItemTapped; 14 15 Content = list; 16 } 17 18 private void List_ItemTapped(object sender, ItemTappedEventArgs e) 19 { 20 DisplayAlert("tapped", e.Item.ToString(), "OK"); 21 } 22}
投稿2016/08/21 02:37
総合スコア4791
0
XAML部分をC#に翻訳するとこんな感じですね。
public MainPage () { BindingContext = new MainPageViewModel (); var listView = new ListView { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, }; listView.SetBinding (ListView.ItemsSourceProperty, "Colors"); listView.SetBinding (ListView.SelectedItemProperty, "SelectedColor"); Content = listView; }
投稿2016/08/21 00:16
総合スコア359
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
最も簡単なのは、ListViewのSelectedItemプロパティに対して、ViewModelのプロパティをバインドし、ViewModelのバインドしたプロパティのsetをフックすることだと思います。
具体的なサンプルを以下に示します。
まずはXAML側のコードです。
xaml
1<?xml version="1.0" encoding="utf-8" ?> 2<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 3 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 4 xmlns:local="clr-namespace:ListViewSample" 5 x:Class="ListViewSample.MainPage"> 6 <ContentView.BindingContext> 7 <local:MainPageViewModel/> 8 </ContentView.BindingContext> 9 <ListView ItemsSource="{Binding Colors}" SelectedItem="{Binding SelectedColor}"/> 10</ContentPage>
MainPageのBindingContextに対して、MainPageViewModelというクラスのインスタンスを新たに生成してバインドしています。
そしてListViewには、そのMainPaggeViewModelのColorsというプロパティの値バインドすることでリスト表示しています。
同様にListViewのSelectedItemsというプロパティに、MainPageViewModelのSelectedColorというプロパティをバインドしています。
MainPageViewModel側を見てみましょう。
cs
1 public class MainPageViewModel 2 { 3 public IList<string> Colors { get; } = new List<string> { "Red", "Blue", "Green" }; 4 private string _selectedColor; 5 public string SelectedColor 6 { 7 set { _selectedColor = value; } 8 } 9 }
こんな感じです。
実行すると、ListViewには、「Red」「Blue」「Green」と表示されます。
リストビューで項目が選択されると、SelectedColorのsetのvalueとして選択された値が渡されてきますので、そこで必要な処理を記載したら良いのではないでしょうか?
Githubにサンプルのコードを上げておきますので、よかったら参照ください。
https://github.com/nuitsjp/XamarinSamples/tree/master/ListViewSample
投稿2016/08/20 15:45
総合スコア346
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。