C# 基于listview所选项目从列表中删除项目

C# 基于listview所选项目从列表中删除项目,c#,listview,visual-studio-2013,windows-store-apps,selecteditem,C#,Listview,Visual Studio 2013,Windows Store Apps,Selecteditem,我知道这听起来有点基本,但我被卡住了,我不知道如何继续 这是主要课程: public sealed partial class MainPage : Page { private ObservableCollection<MyClass> MyList = new ObservableCollection<MyClass>(); private void Button_Click(object sende

我知道这听起来有点基本,但我被卡住了,我不知道如何继续

这是主要课程:

public sealed partial class MainPage : Page
        {
            private ObservableCollection<MyClass> MyList = new ObservableCollection<MyClass>(); 

            private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
            {
                 MyList.Add(new MyClass("Hello", "World"));
                 MyListview.Items.Add(new MyClass("Hello", "World"));
            }

            private void Delete_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
            {
                MyList.Remove((MyClass)MyListview.SelectedItem);
            }
        }
但出于某种原因,这对我不起作用。这样就不会删除任何内容

我的主页的XAML:

<Page
    x:Class="App17.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App17"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Button x:Name="Delete" Content="Delete" HorizontalAlignment="Left" Height="116" Margin="140,89,0,0" VerticalAlignment="Top" Width="224" Click="Delete_Click"/>
        <Button Content="Button" HorizontalAlignment="Left" Height="116" Margin="442,89,0,0" VerticalAlignment="Top" Width="214" Click="Button_Click"/>
        <ListView x:Name="MyListview" HorizontalAlignment="Left" Height="497" Margin="143,261,0,0" VerticalAlignment="Top" Width="510"/>

    </Grid>
</Page>

我很难确定我是否真的在测试您真正需要帮助的代码。但是我想我已经看到了足够多的东西来理解你的问题是什么

具体来说:在显示项目的
ListView
和存储项目的私有
MyList
集合之间没有任何连接

在基于XAML的应用程序中,关键是通过绑定将数据连接到可视化表示。存在“ObservableCollection”的一个主要原因是为了促进这一点,允许基于集合的视觉效果对集合中的更改做出反应

在您的示例中,您应该进行以下更改

更改
MainPage
,使其构造函数和
按钮单击()
方法如下所示:

MyList.Remove((MyClass)MyListview.SelectedItem);
public MainPage()
{
    this.InitializeComponent();

    DataContext = MyList;
}

private ObservableCollection<MyClass> MyList = new ObservableCollection<MyClass>();

private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    MyList.Add(new MyClass("Hello", "World"));
}
<ListView x:Name="MyListview"
          HorizontalAlignment="Left" VerticalAlignment="Top"
          Height="497" Width="510"
          Margin="143,261,0,0"
          ItemsSource="{Binding}"/>
关键是
itemsource
属性。使用空的
绑定
,控件将使用当前数据上下文,该上下文将从页面对象继承,您在代码中将页面对象设置为
MyList


这样,您只需对MyList本身进行操作,可视化表示将自动更新。

您的列表是如何设置的?i、 两个列表是否绑定到同一个集合?也许更详细地看一下您的代码将是前进的方向。你能发布一些XAML吗?绑定是一种方式。我在一个usercontrol中有两个TextBlock,用于listview的datatemplate。1个文本块绑定到
标题
,另一个绑定到
名称
属性。您的意思是类似
MyList.Remove((MyClass)MyListview.SelectedItem)的内容吗?此外,您还可以从中的注释编辑您的问题和张贴代码question@user2975038请阅读并努力提出正确的问题。这不是一个通过评论中的讨论进行交互式问题解决或调试的留言板。在你的问题中包括所有相关信息。哇!!!非常感谢你!!你是最棒的。工作起来很有魅力:D我对装订还是有点陌生,但这确实让我大开眼界;)非常感谢。我能再问你一件事吗?或者我应该为此提出一个新问题?我有两个列表视图,根据字符串属性
Status
,可以是“Yes”或“No”,项目将转到相应的列表视图。我应该再做两个子列表吗?如果是,我如何将它们绑定到我的主MyList?如果你想了解详细信息,你需要一个新问题,因为我无法将其全部放在评论中。:)但简单地说:您可以通过
ICollectionView
对象进行绑定,而不是直接绑定到集合,您可以从中获取该对象。您可以使用
ICollectionView
的过滤功能,根据给定的
ListView
(即每个
ListView
一个
ICollectionView
)只显示“是”或“否”的内容。然后,单个列表以两种不同的方式呈现。
<ListView x:Name="MyListview"
          HorizontalAlignment="Left" VerticalAlignment="Top"
          Height="497" Width="510"
          Margin="143,261,0,0"
          ItemsSource="{Binding}"/>