2

私はWPFアプリケーションを作成しており、ユーザーが(リポジトリパターンも使用して)CRUD操作を使用して詳細を入力できるようにしています。Entity Framework

ここまでで、ユーザーがプロスペクトクライアントに入ることができるアプリケーションを作成しました。この見込み客を編集し、新しい見込み客を追加し、簡単に削除できます。

ただし、この見込み客は、 ProspectMeetingForeign Keyと呼ばれる別のテーブル内にリレーションを持ち、Prospectテーブルからを取得します。ProspectID

Selectただし、ProspectからProspectを取得すると、選択したProspectListViewのデータが表示されません。

下の画像は、現在の状態のアプリケーションの画像です。これにより、私が達成したいことをよりよく理解できることを願っています。

ここに画像の説明を入力

私のリポジトリでは、これを使用してListProspectIDを使用して ProspectMeetings を取得します。

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

私のProspectViewModelでは、これを使用してProspectMeetingViewModelObservable Collectionからデータを取得します。

    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 に答える