2012-04-02 9 views
0

イムから基礎データを読み出して、私は私のリストボックスPhotoFeedで写真をクリックすると、私はいくつかの問題で歩きました。は私のアプリで忙しい一覧

私は、文字列UrlTumbとUrlFullその中で1本の一覧<>を得ました。

私は画像でいっぱいWrapPanelは私が私のUrlTumbからImage.Sourceを設定WICHそれにして1つのListBoxを得ました。

リストボックスの写真をクリックすると、新しいページに移動して元の画像(UrlFull)を表示したいのですが、Image.SourceからUrlTumbしか取得できません。リストに格納されているUrlFull。今私の質問は、私はUrlFullを取得する方法です。それで、どのアイテムをクリックしたのかを追跡して、そのアイテムからUrlFullを取得して、NavigationService.Navigateで送信できるようにするにはどうすればいいですか?

私はそれを汚い方法で行い、ListBoxそしてそこにUrlFullを置くが、私は

だから私は何を置くか、適切な方法でそれをしたいと思っ?????この行のスポット

  NavigationService.Navigate(new Uri("/PhotoInfo.xaml?urlfull={0}", ????? , UriKind.Relative)); 

挨拶Cnの

答えて

2

複数のオプションがあります:あなたのインデックスに対応し、選択したプロパティのインデックス を取得する

  1. 使用して、選択した項目のインデックスlistBox.SelectedIndexは、 ソース(それはあなたがコレクション ソースを使用してコレクションをフィルタリングしていない可能性がある場合、私はそうではないと思う)
  2. 選択した項目listBox.SelectedItemを使用すると、オブジェクトを含む SelectedItemが返されます。 ( 選択モードが複数に設定されている場合は、最初に 選択した項目のみが返されます)
  3. SelectemItemsを使用してください。 SelectedItem (の値が含まれます
  4. 使用SelectedValueは、:それはあなたが選択した
    アイテム(これは通常、あなたのリストの
    選択モードが複数に設定されている場合にのみ使用する必要があります)の配列を取得することができますこれは、あなたと余分なステップを保存します。選択の
  5. 使用引数は、イベントAddedItemsを変更しました。

をベローは、上記の3つのオプションのコードスニペットである。X、Y、Zは、すべて「例えば(あなたの選択した名前になりますマイク ")

XAML:背後

<ListBox x:Name="lb" 
     ItemsSource="{Binding Names}" 
     SelectionChanged="NameChanged" /> 

コード:

public class Person 
    { 
     public string Name { get; set; } 

     public override string ToString() 
     { 
      return Name; 
     } 
    } 

    private List<Person> people = new List<Person> 
     { 
      new Person{Name = "Lewis"}, 
      new Person{Name = "Peter"}, 
      new Person{Name = "Brian"} 
     }; 

    public List<Person> People 
    { 
     get 
     { 
      return this.people; 
     } 
     set 
     { 
      this.people = value; 
     } 
    } 

    private void NameChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var x = this.people[lb.SelectedIndex]; 
     var y = lb.SelectedItem; 
     var z = lb.SelectedItems[0]; 
     var h = lb.SelectedValue; 

     var u = e.AddedItems[0]; 

     var person = e.AddedItems[0] as Person; 
     if (person != null) 
     { 
      var result = person.Name; 
     } 
    } 

SelectedValueのとのSelectedItemの違いはここにSelectedItem vs SelectedValue

+0

VaRの人を参照してください= e.AddedItems [0]パーソンとして; (人!= null)の { VAR結果=人の場合。名; }私のために完全に働いた:D Ty – MrME