【发布时间】:2015-02-15 18:52:18
【问题描述】:
我的业务模型(实际上是使用 Entity Framework 6 读取数据)看起来像:
class Profile : NameDescriptionBase
{
public virtual float Rate {get;set;}
public virtual float HoursPerWeek {get;set;}
public virtual IList<Task> Tasks {get;set;}
}
class Task : NameDescriptionBase
{
public enum TastStates
{
New, Finished, Stopped, InProgress
}
public virtual IList<Task> Tasks {get;set;}
public virtual TastState {get;set;}
public virtual IList<TimeSpan> LoggedPeriods {get;set}
}
我想将此模型绑定到TreeView,它工作正常(通过HierarchicalDataTemplate)。但是我想自定义每个树叶以将每个任务当前状态指示为组合框,以便用户能够更改它。在这里我卡住了。
我可以在数据上下文中实现服务方法,该方法提供与 TaskState 值和 ID 的 Tuple<int, string> 的绑定,但我想将它绑定到每个任务。我的主视图模型(即 DataContext)看起来像:
class MasterViewModel
{
public List<Profile> Profiles {get;set;}
public Profile CurrentProfile {get;set}
public List<Task> ActiveTasks {get;}
public List<Tasl> FinishedTasks {get;}
....
}
因此,当前用户配置文件和相应任务列表更新正常,但看起来绑定到实体本身的属性不起作用。据我了解,这是预期的 - 我的实体没有实现 INotifyPropertyChanged,因为它不是视图模型。
那么,对于我的案例来说,只有一种方法可以将每个任务转换为相应的视图模型并在每个操作之后将具有更新字段的实体保存到数据库中,这对吗?看起来很丑。
【问题讨论】:
-
您添加了视图模型吗?
标签: wpf entity-framework mvvm data-binding