2010-12-02 83 views
0

我有一個充滿按鈕的列表框。點擊按鈕後會顯示一個新頁面。但是當我點擊按鈕時,我想要選擇列表框的索引。但是listboxitem從未被選中。有沒有辦法通過單擊按鈕來獲取按鈕所在的索引。感謝幫助。如何獲取Listbox選擇的索引?

實施例代碼

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
       <Button Click="ViewDetail_Click" Content="{Binding Path=Area}"></Button> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    </ListBox> 

回答

4

按鈕將包含對應於所述列表項目的源數據項的數據上下文。你沒有顯示你的ItemsSource是什麼列表,所以我不能顯示你需要什麼代碼。但這樣的事情:

ObservableCollection<MyDataItem> items = new ObservableCollection<MyDataItem>(); 
... 
myList.ItemsSource = items; 
... 
private void ViewDetail_Click(object sender, RoutedEventArgs e) 
{ 
    Button b = (Button) sender; 
    MyDataItem detailItem = (MyDataItem) b.DataContext; 
    int itemIndex = items.IndexOf(detailItem); 
} 

當然,如果你問在首位的指數的原因是因爲你想獲得相應的數據項的保留,你實際上並不需要索引完全 - 該項目已經在數據上下文中。

順便說一下,我不會在這裏使用ListBoxListBox給隊友帶來的主要是選擇,但是通過將按鈕放入項目中,你擊敗了這一點 - 就像你已經發現的那樣,按鈕在列表框有機會之前處理鼠標輸入,意味着你實際上不能選擇這些項目。在哪一點,爲什麼有一個ListBox?基地ItemsControl可能更有意義。 (如果需要滾動,則包裝在ScrollViewer中。)

+0

我想要選定索引的原因是因爲當我點擊按鈕時會顯示一個新頁面。但是當我點擊新頁面上的上一個按鈕時。我想讓它顯示我上次在列表框中的位置。 – Tan 2010-12-02 10:46:54

相關問題