如何从列表视图中删除列表项而无需选择项目然后将其删除

时间:2017-10-10 12:09:23

标签: c# xml wpf xaml listview

我遇到了一个问题,我可以将项目添加到我的列表视图而不会出现任何问题,但是当我想要删除某个项目时,由于某些原因它无法执行此操作。 我希望能够删除一个项目而不必选择项目,我想通过字符串来做它... 如果LvItems.Items =="这个字符串"然后它知道要删除哪一个。 我不知道列表视图可以为我提供哪些选项,所以我会在Stack上询问专业人士。

问题:

如何在不必选择项目的情况下删除项目 我希望能够找到用户,并从列表中删除该用户并刷新UI,以便用户不再在列表视图中。

这是我在此代码背后的思考过程。

  

创建列表视图

     

添加listviewitem列

     

创建列表

     

在按钮点击事件处理程序&上添加一些内容到列表中填充那个   listview与列表中的项目

     

刷新listView UI

这是.CS

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        //List<Player> items = new List<Player>();
        public ObservableCollection<Player> items = new ObservableCollection<Player>();

        private void btnAppend_Click(object sender, RoutedEventArgs e)
        {
            items.Add(new Player() { Username = "John Doe" });
            lvUsers.ItemsSource = items;
            lvUsers.Items.Refresh();
        }

        private void btnRemove_Click(object sender, RoutedEventArgs e)
        {
            items.Remove(new Player() { Username = "John Doe" });
            lvUsers.Items.Refresh();
        }
    }

    public class Player
    {
        public string Username { get; set; }
    }

这是XAML

<Window x:Class="Listviewssssssssssssss.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Listviewssssssssssssss"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView Name="lvUsers" ItemsSource="{Binding newPatientList}" HorizontalAlignment="Left" Height="107" Margin="10,10,0,0" VerticalAlignment="Top" Width="497">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Player" Width="120" DisplayMemberBinding="{Binding Username}" />
                </GridView>
            </ListView.View>
        </ListView>
        <TextBox Name="tbConent" HorizontalAlignment="Left" Height="78" Margin="10,122,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="497"/>
        <Button Name="btnAppend" Click="btnAppend_Click" Content="Append" HorizontalAlignment="Left" Margin="44,228,0,0" VerticalAlignment="Top" Width="75"/>
        <Button Name="btnRemove" Click="btnRemove_Click" Content="Remove" HorizontalAlignment="Left" Margin="371,228,0,0" VerticalAlignment="Top" Width="75"/>

    </Grid>
</Window>

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ在Player中选择ObservableCollection<Player>对象,然后将其从集合中删除:

private void btnRemove_Click(object sender, RoutedEventArgs e)
{
    var playerToRemove = items.FirstOrDefault(x => x.Username == "John Doe");
    if (playerToRemove != null)
        items.Remove(playerToRemove);
}