2

我正在创建一个 WPF 应用程序,允许用户使用CRUD操作使用Entity Framework(也使用存储库模式)输入详细信息。

到目前为止,我已经创建了一个允许用户进入Prospect客户端的应用程序。我可以编辑这个Prospect,添加一个新的并且能够轻松删除。

这个Prospect虽然Foreign Key在另一个名为ProspectMeeting的表中有一个关系,ProspectIDProspect表中获取。

当我从中获取SelectProspectListView,它不会显示所选Prospect的数据。

下图是应用程序当前状态的图像 - 所以希望能更好地理解我想要实现的目标。

在此处输入图像描述

在我的存储库中,我使用它来List使用ProspectID 获取ProspectMeetings

    public List<ProspectMeeting> GetMeetingByProspect(int _ProspectID)
    {
        using (var context = new DBEntities())
        {
            return context.Prospects.First(i => i.ProspectID == _ProspectID).ProspectMeetings.ToList();
        }
    }

在我的ProspectViewModel中,我使用它Observable CollectionProspectMeetingViewModel获取数据;

    private ObservableCollection<ProspectMeetingViewModel> prospectMeetings = null;
    public ObservableCollection<ProspectMeetingViewModel> ProspectMeetings
    {
        get { return GetProspectMeetings(); }
        set
        {
            prospectMeetings = value;
            OnPropertyChanged("ProspectMeetings");
        }
    }

    internal ObservableCollection<ProspectMeetingViewModel> GetProspectMeetings()
    {
        ProspectMeetingRepository c = new ProspectMeetingRepository();
        prospectMeetings = new ObservableCollection<ProspectMeetingViewModel>();
        prospectMeetings.Clear();

        foreach (DataObjects.ProspectMeeting i in c.GetMeetingByProspect(this.ProspectID))
        {
            ProspectMeetingViewModel prospectMeeting = new ProspectMeetingViewModel(i);
            prospectMeeting.Prospect = this;
            prospectMeetings.Add(prospectMeeting);
        }
        return prospectMeetings;
    }

在我的ProspectListViewModel中;

    private ProspectListViewModel() : base("")
    {
        this.ProspectList = GetProspects();
    }

    private ProspectViewModel selectedProspect = null;
    public ProspectViewModel SelectedProspect
    {
        get
        {
            return selectedProspect;
        }
        set
        {
            selectedProspect = value;
            OnPropertyChanged("SelectedProspect");
        }
    }

    private ObservableCollection<ProspectViewModel> prospectList = null;
    public ObservableCollection<ProspectViewModel> ProspectList
    {
        get
        {
            return GetProspects();
        }
        set
        {
            prospectList = value;
            OnPropertyChanged("ProspectList");
        }
    }

    internal ObservableCollection<ProspectViewModel> GetProspects()
    {
        if (prospectList == null)
            prospectList = new ObservableCollection<ProspectViewModel>();
        prospectList.Clear();

        foreach (DataObjects.Prospect i in new ProspectRepository().GetAll())
        {
            ProspectViewModel c = new ProspectViewModel(i);
            prospectList.Add(c);
        }
        return prospectList;
    }

我一直在关注这个链接来帮助我,但我已经陷入困境。就个人而言,当我查看我的代码时,我认为这与存储库没有获取数据有关。但我不太确定。

我希望有人可以建议或帮助我解决这个问题。首先,对不起,如果这是一个很长的问题,其次如果需要添加更多代码,请告诉我,我只添加了我认为合适的数据。

提前致谢 :)。

4

1 回答 1

0

最终的问题是一个有约束力的问题。在我的MainWindow.xaml中,我没有将ProspectMeetingListView分配给SelectedProspect,就像这样;

<Page.Resources>
    <DataTemplate x:Key="ProspectMeetingListTemplate" >
        <v:ProspectMeetingListView/>
    </DataTemplate>
</Page.Resources>

<ContentControl Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center"
            Content="{Binding SelectedProspect}" ContentTemplate="{StaticResource ProspectMeetingListTemplate}" />

代表我的愚蠢错误。

于 2013-02-19T12:32:03.083 回答