我在win8中使用listview控件。当我按住该项目时,我想添加一个事件,并删除该项目。
像这样的xaml和事件代码:
<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)
{...}
似乎我无法从holdingroutdEventArgs获取任何信息,而是来自originalsource的属性。但它是图像,无法访问iteml
我找到了一个相对的问题:“如何在列表视图中获取点击的项目”。它可以通过获取selecteditem的属性来解决。
谁能帮帮我?给我一些线索。答案 0 :(得分:8)
在您的情况下,您应该可以从HoldingRoutedEventArgs.OriginalSource.DataContext
获取:(假设ListView.ItemSource
是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 :(得分:0)
您可以使用SelectedIndex
属性获取项目的索引(但是对于这些工作,您必须通过按住,并在保留项目后选择)
int i = imageList.SelectedIndex;
因此,要删除该项,可以使用RemoveAt()方法
imageList.Items.RemoveAt(i);