Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从DataContext添加/删除项目_C#_Wpf - Fatal编程技术网

C# 从DataContext添加/删除项目

C# 从DataContext添加/删除项目,c#,wpf,C#,Wpf,如何从DataContext中添加或删除项目?这是我的代码: class WallModel { public WallModel() { WallItems = new ObservableCollection<Wall>(); Initialization = InitializeAsync(); } public Task Initialization { get; private set; } publ

如何从DataContext中添加或删除项目?这是我的代码:

class WallModel
{
    public WallModel()
    {
        WallItems = new ObservableCollection<Wall>();
        Initialization = InitializeAsync();

    }
    public Task Initialization { get; private set; }
    public async Task InitializeAsync()
    {
            WallItems.Add(new Wall { id = 2, user = 3 });
    }
    public ObservableCollection<Wall> WallItems { get; set; }
}

例如,您可以使用:

((WallModel)DataContext).WallItems.Remove(item);

此外,如果lvMain位于主页面中,则不需要设置其datacontext,因为它会被继承

正如Sheridan提到的,使用viewmodel和Delete命令直接在viewmodel中删除项目。

我们通常不会直接在
数据上下文中添加或删除项目。相反,(在MVVM中)我们尝试创建一个类,该类包含我们希望在UI中显示的所有属性以及执行所需功能的方法。然后我们将这个类的一个实例设置为
DataContext


当然,您可以将一个简单的集合属性设置为一个控件的
DataContext
,在这种情况下,您可以像平常一样从该集合中添加或删除项。但是,通常最好操作设置为
DataContext
的数据项,而不是
DataContext
对象本身。

((WallModel)DataContext).WallItems.Add(新墙{id=2,用户=3})

你想干什么?您想在何处添加/删除项目?我相信您可以只键入
((WallModel)lvMain.DataContext).WallItems.Remove(..)
,但您一定是指其他内容。关于我下面的评论,学习使用MVVM模式将大大提高您基于WPF的生产率。OP没有指定MVVM,但向他/她推荐MVVM用于WPF工作是正确的。MVVM非常适合WPF。至少有两种非mvvm方法可以实现这一目标,但mvvm的代码总是较少。
((WallModel)DataContext).WallItems.Remove(item);
((WallModel)DataContext).WallItems.RemoveAt(index);