2014-02-17 77 views
1

我有一個列表框。每個項目都有一個圖像和標題(從我的列表中綁定)。當我點擊列表框中的某個項目時,如何獲取該項目的標題值。Windows phone 8:獲取列表框的值項目

+0

這是一個非常具體的問題,需要您發佈用於模板列表框的XAML。 – steveg89

回答

7

在ListBox中創建一個名爲「SelectionChanged」的事件並將其映射到XAML文件後面的代碼中。在.cs文件中,從myListBox.SelectedItem中獲取值並將其轉換爲您的列表項類型。

EX:在xaml.cs文件XAML文件

<ListBox x:Name="myListBox" ItemsSource="{Binding Items}"  
    SelectionChanged="myListBox_SelectionChanged"> 

private void myListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var mySelectedItem = myListBox.SelectedItem as myObject; 
} 

我希望這有助於。

2

已經很少有類似的問題(firstsecond)。我會盡力向你展示一個例子(小擴展這個什麼@KirtiSagar(if it helps accept his solution as it's the same method)曾表示):

讓我們假設你的itemClass時是這樣的:

public class ItemClass 
{ 
    public Uri ImagePath { get; set; } 
    public string Tile { get; set; } // I used string as an example - it can be any class 
} 

而且你將它綁定到你的列表框像這樣:

<ListBox Name="myList" Grid.Row="2"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="{Binding ImagePath}"/> 
       <TextBlock Text="{Binding Tile}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

這是一個很簡單的例子,但應該告訴你的概述它是如何工作的。

然後在我的頁面和構造我需要添加我的收藏和訂閱事件:

ObservableCollection<ItemClass> items = new ObservableCollection<ItemClass>(); 

public MainPage() 
{ 
    InitializeComponent(); 

    myList.ItemsSource = items; 
    myList.SelectionChanged += myList_SelectionChanged; 
} 

SelectinChanged事件可以在很多方面可用於你的目的。例如,您可以使用其SelectionChangedEventArgs屬性。我將展示一些將產生相同結果的方法。我故意混合了一些東西,只是爲了說明它是如何完成的。

private void myList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (myList.SelectedItem != null) 
    { 
     string myTile = ((sender as ListBox).SelectedItem as ItemClass).Tile; 
     // you can also get your item like this - using EventArgs properties: 
     string myTileToo = ((ItemClass)(e.AddedItems[0])).Tile; 
    } 
    // also you can get this by SelectedIndex and your Item Collection 
    if ((sender as ListBox).SelectedIndex >= 0) 
    { 
     string myTileThree = items[myList.SelectedIndex].Tile; 
    } 
} 

請注意,您LisBox可以在不同的工作SelectionModes例如Multipe - 你也可以嘗試使用,如果你需要它(有性能SelectedItemsAddedItems/RemovedItems,這是IList)。

+0

再次感謝你。你看起來像我最好的朋友^^ – Carson

+0

@Romasz是否可以在ListBoxItem中爲圖像觸發Tap事件?我在DataTemplate中有一個圖像和2個文本塊,並添加了SelectionChanged事件,但我想爲圖像添加Tap事件以獲取不同的功能。你能建議是否有可能做到這一點? –

+0

@KinjanBhavsar對我來說很難說,因此你提供的信息太少。我認爲你應該能夠跟蹤已經被點擊的項目,我想我記得處理這樣的事情,但現在我沒有太多時間,也不知道確切的答案。請在SO上添加一個單獨的問題,可能有人會知道。 – Romasz

相關問題