2013-08-15 9 views
6

Pracuję z kontrolą listview w win8. Chcę dodać wydarzenie, gdy trzymam przedmiot i usuwam przedmiot.Jak uzyskać pozycję, którą trzymałem w widoku listy

XAML i kod zdarzenia tak:

<ListView x:Name="ImageList" VerticalAlignment="Bottom" Background="LightGray" Width="1050" BorderBrush="Black" BorderThickness="2" Grid.Column="1" 
         Holding="ListView_Hold1" SelectionChanged="OnSelectedChanged" SelectionMode="Single" Height="152" ScrollViewer.HorizontalScrollBarVisibility="Auto" ItemContainerStyle="{StaticResource ListViewItemStyle1}" Style="{StaticResource ListViewStyle1}"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
          <Image Opacity="0.7" Width="150" Height="125" Stretch="UniformToFill" Source="{Binding}" /> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
       <ListView.ItemsPanel> 
        <ItemsPanelTemplate> 
         <VirtualizingStackPanel Orientation="Horizontal"/> 
        </ItemsPanelTemplate> 
       </ListView.ItemsPanel> 
      </ListView> 


private async void ListView_Hold1(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e) 
    {...} 

Wydaje się, że nie mogę uzyskać żadnych informacji od holdingroutdEventArgs ale atrybut originalsource. Ale jest to obraz i nie ma dostępu do iteml

Znalazłem względne pytanie: "jak uzyskać kliknięcie elementu w widoku listy". można go rozwiązać, uzyskując atrybut selecteditem.

ktoś może mi pomóc? daj mi jakąś wskazówkę.

Odpowiedz

8

Powinieneś być w stanie uzyskać go z HoldingRoutedEventArgs.OriginalSource.DataContext, w przypadku: (Zakładając, że ListView.ItemSource jest lista ImageModel)

private async void ListView_Hold1(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs args) 
{ 
    var source = (FrameworkElement)args.OriginalSource; 
    var imageModel = (ImageModel)source.DataContext; 
} 
+1

to powinna być akceptowana odpowiedź, po prostu upewnij się, że konwertujesz 'OriginalSource' na' FrameworkElement' najpierw –

+0

IVe poprawił odpowiedź, w odniesieniu do komentarza Hendrasa, tak aby kod się kompilował. –

0

można uzyskać indeks elementu za pomocą właściwości SelectedIndex (ale dla nich pracować trzeba wybrać, naciskając i po przytrzymaj element)

int i = imageList.SelectedIndex; 

Tak, aby usunąć element można użyć metody RemoveAt()

imageList.Items.RemoveAt(i); 
Powiązane problemy