Как получить список выбранных индекса? - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть список, заполненный кнопками.Когда нажимаются кнопки, появляется новая страница.Но я хочу иметь выбранный индекс списка, когда я нажимаю на кнопку.Но список элементов никогда не выбирается.Есть ли способ получить индекс, где находится кнопка, нажав на кнопку.Спасибо за помощь.

Пример кода

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

1 Ответ

5 голосов
/ 02 декабря 2010

Контекст данных кнопки будет содержать элемент данных источника, соответствующий элементу списка. Вы не показали, какой у вас 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);
}

Конечно, если причина, по которой вы запрашиваете индекс в первую очередь, в том, что вы хотите получить соответствующий элемент данных, вам на самом деле не нужен индекс вообще - элемент уже находится прямо в контекст данных.

Кстати, я бы не использовал здесь ListBox. Главное, что ListBox привносит на вечеринку, это выбор, но, помещая кнопки в качестве элементов, вы побеждаете это - как вы уже обнаружили, кнопка обрабатывает ввод с помощью мыши, прежде чем у списка появится шанс Это означает, что вы не можете выбрать элементы. В какой момент, почему есть ListBox? База ItemsControl, вероятно, имеет больше смысла. (Заворачивается в ScrollViewer, если вам нужна прокрутка.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...