2013-08-15 30 views
6

Win8'de liste görüntüleme denetimi ile çalışıyorum. Öğeyi tuttuğumda bir öğe eklemek ve öğeyi silmek istiyorum.Liste görünümünde tuttuğum öğe nasıl olur?

böyle

xaml ve olay kodu:

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

Ben holdingroutdEventArgs herhangi bir bilgi ama originalsource vasfını alamayan gibi görünüyor. Ancak bu resim ve erişimsiz erişimdir.

Göreceli bir soru buldum: "tıklanan öğeyi liste görünümünde nasıl alabilirim". selecteditem özelliğini alarak çözülebilir.

Herkes bana yardımcı olabilir? bana biraz ipucu ver.

cevap

8

Sen durumda, HoldingRoutedEventArgs.OriginalSource.DataContext almak için de mümkün olmalıdır: Sen SelectedIndex özelliğini kullanarak öğenin dizinini alabilirsiniz

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

bu kabul edilen cevap olmalı, sadece 'OriginalSource' '' FrameElement' 'i çevirdiğinizden emin olun. İlk –

+0

IVe, Hendras yorumuna ilişkin cevabı düzeltti, böylece kod derlendi. –

0

((ListView.ItemSourceImageModel bir listesi olduğunu varsayarsak) ancak bunlar için basarak, seçmek zorunda ve)

int i = imageList.SelectedIndex; 

öğeye uzun sonra Yani RemoveAt() yöntemini kullanabilirsiniz öğeyi silmek için çalışmak

imageList.Items.RemoveAt(i); 
İlgili konular