2013-08-15 9 views
6

Ich arbeite mit ListView-Steuerelement in Win8. Ich möchte ein Ereignis hinzufügen, wenn ich den Gegenstand festhabe und den Gegenstand lösche.Wie bekomme ich den Artikel, den ich in der Listenansicht gehalten habe

der XAML und Ereigniscode wie folgt aus:

<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) 
    {...} 

Es scheint, dass ich keine Informationen von holdingroutdEventArgs aber das Attribut von originalsource bekommen kann. Aber es ist das Bild und kein Zugriff auf Artikel

Ich habe eine relative Frage gefunden: "Wie Sie das angeklickte Element in der Listview erhalten". Es kann gelöst werden, indem das Attribut selecteditem abgerufen wird.

kann mir jemand helfen? Gib mir einen Hinweis.

Antwort

8

Sie sollten es in Ihrem Fall aus dem HoldingRoutedEventArgs.OriginalSource.DataContext, erhalten können: (Unter der Annahme, dass die ListView.ItemSource eine Liste von ImageModel ist)

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

Dies sollte die akzeptierte Antwort sein, stellen Sie nur sicher, 'OriginalSource' in 'FrameworkElement' zu konvertieren zuerst –

+0

IVe korrigiert die Antwort, in Bezug auf Hendras Kommentar, so dass der Code kompiliert. –

0

Sie den Index des Elements erhalten die SelectedIndex Eigenschaft verwenden (aber für diese arbeiten Sie auswählen müssen, durch Drücken und nach dem Titel besitzen)

int i = imageList.SelectedIndex; 

So das Element löschen Sie die RemoveAt() -Methode verwenden können

imageList.Items.RemoveAt(i); 
Verwandte Themen