UWP ListView Выбранные элементы просто возвращает некоторые элементы

#c# #wpf #listview #uwp

#c# #wpf #listview #uwp

Вопрос:

Я создаю приложение UWP и использую a ListView для отображения списка элементов. ObservableCollection Для этого я использую an. ListView Используется режим множественного выбора, но когда я проверяю, какие элементы были выбраны, он просто возвращает половину выбранных элементов. Вот мой код для

Файл XAML

 <Grid>
        <StackPanel>
            <TextBlock Text="{x:Bind Travel.Name}" VerticalAlignment="Top" Height="45" Width="145" FontSize="30"  HorizontalAlignment="Left"  Margin="20,0,0,10" />
            <TextBlock Text="Select the items you want to add to the travel:" FontSize="15"  HorizontalAlignment="Left"  Margin="20,0,0,10"/>
            <ListView x:Name="ItemsList" Margin="20, 10, 20, 20" IsItemClickEnabled="True" x:DefaultBindMode="OneWay" SelectionMode="Multiple">
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="data:Item">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock  VerticalAlignment="Center" Width="100" FontSize="15" Text="{x:Bind Name}" Margin="0,0,30,0" ></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
            <Button x:Name="AddItems" Content="Add Items" HorizontalAlignment="Left" Click="AddItems_Click" Margin="20, 10, 0, 0"/>
        </StackPanel>
    </Grid>
 

Код позади:

 public ObservableCollection<Item> ItemsOfTravel { get; set; } = new ObservableCollection<Item>();

private void AddItems_Click(object sender, RoutedEventArgs e)
        {
            foreach(var item in ItemsList.SelectedItems)
            {
                ItemsOfTravel.Remove((Item)item);
            }
        }
 

Комментарии:

1. Непонятно, как ItemsList.SelectedItems не будут возвращены все выбранные вами элементы, вы пробовали отладку, чтобы проверить значение SelectedItems при вызове обработчика событий AddItems_Click ? И если да, то каков был результат? Не могли бы вы привести несколько примеров?

Ответ №1:

Мне нужно было получить массив из выбранных элементов следующим образом:

 private void AddItems_Click(object sender, RoutedEventArgs e)
        {            

            foreach(Item item in ItemsList.SelectedItems.ToArray())
            {                
                ItemsOfTravel.Remove(item);
            }            
        }
 

Кажется, что результат выбранных элементов менялся каждый раз, когда я удалял элемент из наблюдаемой коллекции, и именно поэтому он не перебирал все элементы

Комментарии:

1. Это говорит мне, что я должен ждать этого 2 дня