我有两个名为进程和 ProcessTriggers 的表。 ProcessTriggers引用Process table.And需要创建一个屏幕来显示Process以及与Process相关的ProcessTrigger。我使用实体框架创建了数据对象,我的类看起来像。
public partial class Process
{
public Process()
{
this.ProcessTriggers = new ObservableCollection<ProcessTrigger>();
}
public int ID { get; set; }
public int WorkflowID { get; set; }
public string Name { get; set; }
public bool IsBatch { get; set; }
public Nullable<System.DateTime> ModifiedOn { get; set; }
public virtual ObservableCollection<ProcessTrigger> ProcessTriggers { get; set; }
}
我的视图模型看起来像..
public class ProcessViewModel : ViewModel<Process>
{
private RelayCommand saveCommand;
private RelayCommand cancelCommand;
public ProcessViewModel()
{
using(var context = new PACEContext())
{
this.Entity = context.Processes.FirstOrDefault(i => i.ID == 1);
IsInEditMode = true;
}
}
}
我将这些viewModel绑定到我的View,实体属性绑定正确,但 ProcessTriggerCollection未绑定到datagrid ..
<DataGrid ItemsSource="{Binding Entity.ProcessTriggers}" AutoGenerateColumns="True">
</DataGrid>
我开始学习WPF,MVVM和实体框架。可以提供任何帮助。?
答案 0 :(得分:1)
我理解Process有一个名为ProcessTriggers的其他类的ObservableCollection。
为什么你不创建一个ObservableCollection并绑定它?
private ObservableCollection<ProcessTrigger> _listProcessTriggers;
public ObservableCollection<ProcessTrigger> ListProcessTriggers
{
get { return _listProcessTriggers; }
set { _listProcessTriggers= value; RaisePropertyChanged("ListProcessTriggers"); }
}
public ProcessViewModel()
{
using(var context = new PACEContext())
{
this.Entity = context.Processes.FirstOrDefault(i => i.ID == 1);
ListProcessTriggers = Entity.ProcessTriggers;
IsInEditMode = true;
}
}
并在Xmal Binding中
<DataGrid ItemsSource="{Binding ListProcessTriggers}" AutoGenerateColumns="True />