使用Entity Framework在WPF中显示数据网格中的子记录

时间:2014-06-10 21:18:58

标签: c# wpf entity-framework mvvm

我有两个名为进程 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和实体框架。可以提供任何帮助。?

1 个答案:

答案 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 />