C# 从DataContext添加/删除项目
如何从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
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);