C# 如何在WPF中正确设置itemsource以显示ObservableCollection项?

C# 如何在WPF中正确设置itemsource以显示ObservableCollection项?,c#,.net,xml,wpf,xaml,C#,.net,Xml,Wpf,Xaml,我有一个项目,我试图找出如何将内容添加到listview中,然后再删除它们。但是我似乎无法绑定itemsource,除非我硬编码它。如何在XAML中实现它 这将向listview添加一个项目 public partial class MainWindow : Window { private ObservableCollection<myItem> Item; const string pattern = @"((.*)) (.*) left

我有一个项目,我试图找出如何将内容添加到listview中,然后再删除它们。但是我似乎无法绑定itemsource,除非我硬编码它。如何在XAML中实现它

这将向listview添加一个项目

public partial class MainWindow : Window
    {
        private ObservableCollection<myItem> Item;
        const string pattern = @"((.*)) (.*) left the game";

        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnAppend_Click(object sender, RoutedEventArgs e)
        {
            Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
            lvUsers.ItemsSource = Item;
        }
    }
编辑2

MainWindow.xaml.cs

using System.Collections.ObjectModel;
using System.Windows;

namespace Listviewssssssssssssss
{
    public partial class MainWindow : Window
    {
        public ObservableCollection<myItem> Item { get; private set; }

        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnAppend_Click(object sender, RoutedEventArgs e)
        {
            Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
            lvUsers.Items.Refresh();
        }

        private void btnRemove_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}
使用System.Collections.ObjectModel;
使用System.Windows;
名称空间列表视图SSSS
{
公共部分类主窗口:窗口
{
公共ObservableCollection项{get;private set;}
公共主窗口()
{
初始化组件();
}
私有无效btnAppend_单击(对象发送方,路由目标)
{
Item=newobserveCollection(){newmyitem(){Username=“Prabhat”};
lvUsers.Items.Refresh();
}
私有void btnRemove_单击(对象发送者,路由目标)
{
}
}
}

项目
作为公共财产:

public ObservableCollection<myItem> Item { get; private set; }
或者您可以将窗口的
DataContext
设置为自身:

public partial class MainWindow : Window
{
    public ObservableCollection<myItem> Item { get; private set; }
    const string pattern = @"((.*)) (.*) left the game";

    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
    }
}

项目
设为公共财产:

public ObservableCollection<myItem> Item { get; private set; }
或者您可以将窗口的
DataContext
设置为自身:

public partial class MainWindow : Window
{
    public ObservableCollection<myItem> Item { get; private set; }
    const string pattern = @"((.*)) (.*) left the game";

    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
    }
}

当使用WPF,尤其是XAML绑定时,的可能副本会派上用场。当使用WPF,尤其是XAML绑定时,的可能副本会派上用场。modofer给了我这种不一致的可访问性:字段类型“ObservableCollection”比字段“MainWindow”更难访问。项“它仍然没有添加listview hmIs用户名是myItem类的公共属性吗?是的,先生,我会更新问题以便你能看到类你能不能也发布MainWindow.xaml.cs的当前定义?更改modofer给了我这种不一致的可访问性:字段类型“ObservableCollection”比字段“MainWindow.Item”更难访问它仍然没有将用户名添加到listview hmIs用户名的公共属性myItem类?是的,先生,我会更新这些问题,以便您可以查看该类。您是否可以发布MainWindow.xaml.cs的当前定义?
public class myItem { ... }
public partial class MainWindow : Window
{
    public ObservableCollection<myItem> Item { get; private set; }
    const string pattern = @"((.*)) (.*) left the game";

    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
        Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
    }
}
<ListView Name="lvUsers" ItemsSource="{Binding Item}" ...>
public partial class MainWindow : Window, INotifyPropertyChanged
{
    private ObservableCollection<myItem> _items;
    public ObservableCollection<myItem> Item
    {
        get { return _items; }
        set { _items = value; NotifyPropertyChanged(); }
    }

    public MainWindow()
    {
        InitializeComponent();
    }

    private void btnAppend_Click(object sender, RoutedEventArgs e)
    {
        Item = new ObservableCollection<myItem>() { new myItem() { Username = "Prabhat" } };
    }

    private void btnRemove_Click(object sender, RoutedEventArgs e)
    {

    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}