【问题标题】:UWP ListView Selected Items just returns some itemsUWP ListView Selected Items 只返回一些项目
【发布时间】:2021-04-18 10:37:57
【问题描述】:

我正在做一个 UWP 应用程序,我正在使用 ListView 来显示项目列表。我为此使用ObservableCollection。 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);
            }
        }

【问题讨论】:

  • 不清楚ItemsList.SelectedItems 不会返回您选择的所有项目,您是否尝试在调用事件处理程序AddItems_Click 时检查SelectedItems 的值?如果是这样,结果如何?你能提供一些例子吗?

标签: c# wpf listview uwp


【解决方案1】:

我需要从选定的项目中获取一个数组,如下所示:

private void AddItems_Click(object sender, RoutedEventArgs e)
        {            

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

似乎每次我从 Observable 集合中删除一个项目时,所选项目的结果都会发生变化,这就是它没有遍历所有项目的原因

【讨论】:

  • 它告诉我我必须等待那 2 天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多