2012-05-02 4 views
0

私はSDFデータベースに接続するアプリケーションを作成しました。ユーザは映画の映画のリストを与えられる。ユーザーはムービーを選択して「OK」ボタンを押すことができます。WPFのページ間でデータベースから値を渡すにはどうすればよいですか?

ユーザーは、そのムービーのすべての情報を含む別のデータグリッドを表示する必要があります。

2つのページの間にSelectedIndexを渡そうとしましたが、SelectedIndexを情報ページに送信しますが、SelectedIndexには割り当てません。

public Desc(int input_id) 
    { 
     InitializeComponent(); 


     cinemaEntities = new cinema1.cinemaDBEntities(); 
     movieViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("moviesViewSource"))); 

     System.Data.Objects.ObjectQuery<cinema1.movie> moviesQuery = this.GetMovieQuery(cinemaEntities); 

     movieViewSource.Source = moviesQuery.Execute(System.Data.Objects.MergeOption.OverwriteChanges); 
     moviesListView.SelectedIndex = id; 

答えて

0

MVVMのようなパターンとMVVMのようなフレームワークを使用して、ビュー間でデータを渡します。ここでは素晴らしいチュートリアルです。何をすべきか

http://www.youtube.com/watch?v=s-goeb2u3oA&safety_mode=true&persist_safety_mode=1&safe=active

+0

時間が限られていますが、両方のページが作成されますが、各ページで同じ行を選択することはできません。私はそれがちょうどSelectedIndexの注文だと思う。 –

+0

大きなプロジェクトは小さいプロジェクトから始めることを覚えておいてください。堅実なアーキテクチャの基盤を確立することで、多くの時間を節約できます。ショートカットを取ると、しばしば生産性が低下することがあります。とにかくあなたのために働くものは、私の2セントです。 – Thomas

0

は、ソフトウェアの目的に依存するが、いずれにしても私はあなたのソフトウェアのアーキテクチャにもう少し努力を費やすことをお勧めします。 WPFを使いたい場合は、MVVM(Model-View-ViewModel)アプローチを採用するかどうかを決定する必要があります。これは高度にメンテナンス可能であり、多くの利点がありますが、使い慣れた時間が必要です。小規模または単純なアプリケーションでは無駄がないようにすばやく解決できるのは、ビューとコントロールのコードビヘイビア内にGUIロジックをコーディングすることです。

とにかく、タイプに応じてデータベースデータをミラーリングするモデルレイヤーを作成します(MovieDatabaseにはCollection of Moviesなどがあります)。次に、データベースからモデルを埋めるためのアダプタを作成します。次に、ビューでモデルを使用するか、素早く実行したい場合はViewModelをモデルに書き込んでください(より良い方法です)。

これは、あなたが難しいと言ったコードから、問題が何であるかと言われています。あなたはもう少し文脈を持っていますか?なぜあなたはSelectedItemを渡さないのですか?

+0

私は両方のページに同じビットのコードを持っていますが、それは非常に非実用的ですが、それは短い割り当てです。私はちょうど2つのページの間で選択を維持したかった。 SelectedIndexは、現在選択されているListViewの行番号を格納しているようです。だから次のページに同じリストの詳細が自動的に表示されるようにしたい。 –

+0

ListViewにデータが含まれていて、SelectedIndexを設定すると、項目が選択されます。あなたが設定しようとしているインデックスが正しいかどうかをデバッグして確認します(なぜ、idがinput_idの場合idを設定しますか?)、ListViewにデータが含まれています。 SelectedIndexを設定した後、ListViewのSelectedItemプロパティが適切な項目かどうかを確認します。はいの場合は、別の場所に変更される可能性があります。 – Marc

0

Movieオブジェクトを2番目のページに渡すだけではどうですか。そして、.SelectedItemを使用してください。なぜ1つの映画のディテールであれば、2ページ目にリスト全体が必要なのですか?

関連する問題