2017-02-27 22 views
0

私はリストビューで選択したアイテムを取得したかったのです。リストビューでアイテムを選択するたびに、常に最後のアイテムが取得されます。ここに私のコードです:あなたの助けに感謝ListViewでアイテムを取得するWindows Phone

enter image description here

コード

enter image description here

の後ろ

XAML、ありがとうございました。

更新日:

人クラス

private string name; 
     private string imagePath; 
     private string contact; 
     private string gender; 

     public Person() 
     { 

     } 

     public String Name 
     { 
      get { return name; } 
      set 
      { 
       name = value; 
      } 

     } 

     public String Gender 
     { 
      get { return gender; } 
      set 
      { 
       gender = value; 
      } 

     } 

     public String ImagePath 
     { 
      get { return imagePath; } 
      set 
      { 
       imagePath = value; 
      } 
     } 

     public String Contact 
     { 
      get { return contact; } 
      set 
      { 
       contact = value; 
      } 
     } 

MainPage.cs

Person person = new Person(); 
    public MainPage() 
    { 
     this.InitializeComponent(); 

     this.NavigationCacheMode = NavigationCacheMode.Required; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

    } 

    private void buttonAdd_Click(object sender, RoutedEventArgs e) 
    { 
     person.Name = textBoxName.Text.ToString(); 
     person.Contact = textBoxContact.Text.ToString(); 
     listViewDirectory.Items.Add(person); 

     textBoxName.Text = ""; 
     textBoxContact.Text = ""; 
     radioButtonMale.IsChecked = false; 
     radioButtonFemale.IsChecked = false; 
     imageGender.Source = null; 
    } 

    private void radioButtonIsClicked(object sender, RoutedEventArgs e) 
    { 
     var selectedRadio = myStackPanel.Children.OfType<RadioButton>().FirstOrDefault(r => r.IsChecked == true); 

     if (selectedRadio.Content.ToString().Equals("Male")) 
     { 
      imageGender.Source = new BitmapImage(new Uri(
     "ms-appx:///Assets/tiles/boy.png", UriKind.Absolute)); 
      person.ImagePath = "ms-appx:///Assets/tiles/boy.png"; 
      person.Gender = selectedRadio.Tag.ToString(); 
     } 
     else if (selectedRadio.Content.ToString().Equals("Female")) 
     { 
      imageGender.Source = new BitmapImage(new Uri(
     "ms-appx:///Assets/tiles/girl.png", UriKind.Absolute)); 
      person.ImagePath = "ms-appx:///Assets/tiles/girl.png"; 
      person.Gender = selectedRadio.Tag.ToString(); 
     } 
    } 

    private void listViewDirectory_ItemClick(object sender, ItemClickEventArgs e) 
    { 
     Person obj = (Person)e.ClickedItem; 

     Debug.WriteLine(obj.Name); 


    } 
+1

/コピーあなたのコードを貼り付け、SOのタグエディタを使用して、それをフォーマットしてください。 –

+0

ListViewですべてのscrollviewerプロパティを削除しようとしていますか?問題が発生する可能性があります – HelloWindowsPhone

+0

@HelloWindowsPhone:いいえ、アイテムをクリックするたびにlistviewから値を取得する必要があります。しかし、私は常にlistviewから最後の値を取得します。 – AppDev

答えて

0

@mindOfAiと同様に、ItemClickイベントを使用することができます。これは、リストビューの項目が相互作用を受け取り、IsItemClickEnabledプロパティがtrueの場合に発生します。そして、私たちはItemClickEventArgs.ClickedItemプロパティで項目を得ることができます。

あなたが投稿コードから、あなたが人のインスタンスを定義し、buttonAdd_Clickイベントによってデータを設定しているようです。 ListViewItemsourceをどこに設定しているのかわかりません。

あなたはコレクションにあなたの人物オブジェクトを追加することができるはず、と私たちはItemsourceにコレクションを設定することができます。その後、ItemClickイベントでClickedItemを取得できます。例えば

private ObservableCollection<Person> Persons; 

public MainPage() 
{ 
    this.InitializeComponent(); 
    this.NavigationCacheMode = NavigationCacheMode.Required; 
    Persons = new ObservableCollection<Person>(); 

    for (int i = 0; i < 10; i++) 
    { 
     Persons.Add(new Person()); 
     Persons[i].Contact = "Contact" + i; 
     Persons[i].Gender = "Gender" + i; 
     Persons[i].ImagePath = "ms - appx:///Assets/tiles/boy.png"; 
     Persons[i].Name = "Name" + i; 
    } 
    listViewDirectory.ItemsSource = Persons; 
} 
+0

私のコードでObservableCollectionを追加して問題を解決しました。 – AppDev

0

を私はこれをお勧めしません。項目の選択にListViewのTappedイベントを使用しないでください。 ItemClickイベントだけを使用してみませんか?

まず、ListViewIsItemClickEnabledXAMLに有効にします。それをfalseからtrueに設定します。次に、ItemClickイベントを追加します。

private void ListView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    //Use e.ClickedItem to get the data; 
} 

希望します。

+0

ありがとう@mindOfAi。私はすでにそれを試みたが、まだlistviewの最後の項目を取得する。 – AppDev

+0

それは奇妙です。 'ItemClick'を追加した後に' Tapped'イベントを削除しましたか? – mindOfAi

+0

はい、既に削除しました。それはいつも私のリストビュー内の最後の項目を与える、なぜ私はわからない:( – AppDev

関連する問題