[英]wpf mvvm two way databinding with Entity Framework
我有如下由實體框架生成的類。 我的要求是將數據庫中的數據加載到列表視圖中,如果列表視圖中發生任何已檢查的更改,請將其存儲回去。
為此,在我的模型中,我編寫了下面的另一個實現INotifyPropertyChanged
局部類。 我想將實體框架類用作模型。
同樣,我有一個視圖,其中包含用於顯示Name
和Location
的列表視圖,以及用於顯示已選中狀態的每一行的復選框。 因此,對於復選框,我編寫的邏輯示例為CheckBox IsChecked=true
, mode=two way
, UpdateSourceTrigger=PropertyChanged
。 我使用OnCheckedChanged
事件在視圖模型中調用db.SaveChanges
。
db
是SampleDbContext
類型的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....
}
您正在屬性設置器中調用同一屬性。 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");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.