J'ai donc du mal à retrouver un SelectedIndex correct dans un événement click. Peu importe quel élément je choisis, je reçois toujours revenir -1Impossible d'obtenir un ListView.SelectedIndex valide
Voici mon événement:
private void Delete_Click(object sender, RoutedEventArgs e)
{
var index = CitiesDisplay.SelectedIndex;
if(CitiesDisplay.SelectedIndex >= 0)
{
vm.Cities.Remove(vm.Cities[index]);
}
}
Et voici mon ListView:
<ListView Name="CitiesDisplay" ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Holding="ListViewItem_Holding">
<!-- Begin Flyout menu -->
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Delete" Click="Delete_Click"/>
<MenuFlyoutItem Text="Navigate To" Click="NavigateTo_Click"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<!-- End Flyout Menu -->
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical">
<TextBlock Name="CityName" Text="{Binding Name}" FontSize="20"></TextBlock>
<TextBlock Name="MaxTemp" Text="{Binding max}"/>
<TextBlock Name="MinTemp" Text="{Binding min}"/>
<TextBlock Name="CurrentTemp" Text="{Binding temp}"/>
</StackPanel>
<Image Name="Logo" Width="50" Height="50" Source="{Binding icon}" HorizontalAlignment="Right" Margin="5"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Je ne comprends vraiment pas pourquoi je ne peut pas obtenir mon SelectedIndex parce que j'ai fait la même chose dans un projet précédent et cela a fonctionné parfaitement.
J'ai également essayé de manipuler SelectedItems en vain.
Quelques détails supplémentaires: Je développe un Windows Phone 8.1 App (WinRT) en utilisant Visual Studio 2015 Mise à jour 1.
Sur curosity si vous déboguer dans votre objet CitiesDisplay-t-il quoi que ce soit dans la collection? – CathalMF
@ChathalMF Lors du débogage dans CitiesDisplay, j'ai effectivement la collection Items, qui contient mes items (et ils sont quand même affichés). –
Liez-vous votre vue de liste dans le code avec quelque chose comme CitiesDisplay.ItemsSource = MyItems; Peut-être que lorsque vous changez l'affichage, la source de l'élément est en train de tout réinitialiser. – CathalMF