我有Entity Framework生成的类如下。我的要求是将数据库中的数据加载到列表视图中,如果在列表视图中发生任何已检查的更改,则将其存储回来。
为了我的模型中的目的,我编写了另一个实现INotifyPropertyChanged
的部分类。我想将我的Entity Framework类用作模型。
沿着相同的行,我有一个视图,其中包含用于显示Name
和Location
的列表视图以及每行显示已检查状态的复选框。因此,对于复选框,我编写的逻辑示例是CheckBox IsChecked=true
,mode=two way
,UpdateSourceTrigger=PropertyChanged
。我使用OnCheckedChanged
事件在我的视图模型中调用db.SaveChanges
。
db
是SampleDbContext
类型的对象。但似乎绑定没有发生,即检查的更改没有存储到数据库中。
为什么选中的更改未保存到数据库?
实体框架类:
public partial class Datagrid
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public Nullable<bool> IsChecked { get; set; }
}
public partial class SampleDbContext : DbContext
{
public SampleDbContext() : base("name=SampleDbContext")
{}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Datagrid> Datagrids { get; set; }
}
我在模型中的自定义类:(这是示例代码可能有一些拼写错误,但请忽略它)
[MetaDataType(typeof(grid))]
public partial class DataGrid
{}
public class grid:INotifyPropertyChanged
{
public Nullable<bool> IsChecked
{
get { return IsChecked; }
set
{
IsChecked=value;
OnPropertyChanged("IsChecked");
}
}
//INotifyPropertyChanged Implementation....
}
答案 0 :(得分:0)
您在属性设置器中调用了相同的属性。 =器isChecked价值。创建一个私有字段来存储isChecked值。
[MetaDataType(typeof(grid))]
public partial class DataGrid
{
}
public class grid:INotifyPropertyChanged
{
private bool? m_IsChecked;
public Nullable<bool> IsChecked
get
{
return m_IsChecked;
}
set
{
if(m_IsChecked != value)
{
m_IsChecked=value;
OnPropertyChanged("IsChecked");
}
}
}