Получить выбранный элемент из списка в удержании - PullRequest
1 голос
/ 15 февраля 2012

У меня есть ListBox в приложении WP7, где я хочу что-то сделать с элементом, когда пользователь удерживает его. Работа на мероприятии отличная. Мой метод hold вызывается, но я не могу определить, какой элемент в списке был удержан. ListBox.SelectedItem всегда равен -1, и код из другого сообщения в stackoverflow не работает:

FrameWorkelement element = (FrameworkElement) e.OriginalSource;
ItemViewModel item = (ItemViewModel) element.DataContext;

Я получаю исключение InvalidCastException при запуске его во второй строке.

1 Ответ

5 голосов
/ 15 февраля 2012

Следующий код должен работать.

private void StackPanel_Hold(object sender, GestureEventArgs e)
{
    ItemViewModel itemViewModel = (sender as StackPanel).DataContext as ItemViewModel;
    string t = itemViewModel.LineOne;
}

Примечание: перед использованием DataContext объекта-отправителя убедитесь, что вы привели объект-отправитель к правильному классу. В этом примере я использую StackPanel в своем шаблоне данных:

<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="0,0,0,17" Height="78" Hold="StackPanel_Hold">
                <TextBlock Text="{Binding LineOne}" />
                <TextBlock Text="{Binding LineTwo}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...