私は、自分のウィンドウにDataGridと2つのリストボックスを持っています。私はSQL Serverに接続するためにEntity Frameworkを使用しています。 ListBoxesパラメータで選択した項目に応じて、ストアドプロシージャに渡され、DataGridのデータが取得されます。私はMVVMを使用せずにこの機能を実装することができました。 MVVMを使用してこれを実装する方法を知りたいと思います。私を助けてください。前もって感謝します。バインディングを使用してUIを更新する方法
0
A
答えて
4
まず、MVVMはコードの問題を適切な領域に分割することについてです。たとえば、EF経由でデータベースと対話するには、モデルで行う必要があります。 ViewModelは、データを保持し、それを表示または表示に適した形にするための整形またはマッサージを行います(つまり列挙型をカラーなどに変換する)。
MVVMの方法で、あなたの機能を実装するには、バインディングを使用する必要があり、あなたのビューにあなたのviewmodelをバインドします:
public class MyControl
{
public MyControl()
{
this.DataContext = new MyViewModel();
}
}
:ビューの背後にあるコードで
<MyControl>
<LayoutRoot>
<ListBox ItemsSource={Binding MyItems} SelectedItem={Binding MySelection} />
</LayoutRoot>
</MyControl>
あなたのViewModelは次のようになります:
public class MyViewModel : INotifyPropertyChanged
{
public ObservableCollection<MyDataObject> MyItems
{
get { return _myItems; }
set
{
_myItems = value;
OnPropertyChanged("MyItems");
}
}
public MyDataObject MySelection { get; set; }
public void DoSomethingWithDatabase()
{
Model.DoSomething(MySelection);
}
}
これはちょうど非常に単純なexaですあなたがMVVMのやり方をしている場合(そして私は意図的にたくさんのものを逃してしまった)、何が必要なのかを説明しています。適切な例と文書を作成するためには、本の中で少なくとも1章を取る必要があることを知っておく必要がありますので、さらに読むためにMSDNの記事を参照してください:Implementing the Model-View-ViewModel Pattern
とモデルはちょうどあなたがまた、SOAを実装する場合、モデルはちょうどそのデータベースに話しサービスを呼び出すことができます足がかりかもしれません。
これはビューでConvertersでも行うことができますが、コンバータでは必ずしも可能であるとは限りません。
関連する問題
- 1. バインディングを使用してWPFで更新をキャンセルする
- 2. PublishSubjectを使用してUIを更新する方法(次へ)最初は
- 3. ui-gridを使用して列の値を更新する方法
- 4. WPFのバインディングからUI更新を一時停止する方法
- 5. データベースの変更としてWPF UIを更新する方法
- 6. プロパティの変更コールバックでコンバーターや更新を使用してバインディングを使用する方が速いですか?
- 7. UIでストリーミングデータを更新する方法
- 8. UIスライダーを更新する方法
- 9. UIを更新する方法
- 10. デリゲートを使用してバックグラウンドタスクからUIを更新する
- 11. バックグラウンドスレッドでタイマーを使用してUIを更新する
- 12. バックグラウンドワーカーを使用してUIを更新する
- 13. UIを更新して更新が完了するまで待つ方法
- 14. ドメインサービスクラスを使用して更新プログラムを適用する方法
- 15. invokeとdelegateを使用してUIを更新します。
- 16. AsyncTaskLoaderを使用してロケーションデータUIを更新しますか?
- 17. librsvg Pythonバインディングを使用してsvgイメージファイルのサイズを変更する方法
- 18. $ .ajax {}を使用してajaxを使用してhtmlを更新する方法
- 19. express.jsハンドルバーを使用してすべてのページをリフレッシュせずにUIを更新する方法
- 20. WPF双方向バインディングがUIから更新されない
- 21. CAPTUREバインディングを使用してASTを作成する方法は?
- 22. ブロードキャストレシーバーを使用してフラグメントUIを更新したい
- 23. oleDbDataAdapter.Update(myDataSet)を使用してExcelファイルを更新する方法
- 24. androidのbaseadapterを使用してカスタムリストビューを更新する方法
- 25. nhibernateを使用してレコードを更新する方法
- 26. データバインディングを使用してC#グラフコントロールを更新する方法
- 27. dataadpterを使用してデータベースのデータを更新する方法
- 28. laravelでテーブルを使用してデータを更新する方法
- 29. d3.jsを使用して軸を更新する方法
- 30. HJCacheを使用してイメージを更新する方法は?
ビューモデルでコンバージョンを実行することは、実際には正しく実行するのが難しいです。試行したほとんどの人は、モデルとビューモデルの間でプロパティ変更通知を取得し、メモリがリークしてしまいます。 –
私はあなたがモデルとVMの責任のいくつかを融合させていると思います。そして、伝統的に、状態を視覚的表現( 'enumを色に変換する ')に変換するなどのタスクは、VMの仕事ではなくView(カスタムコンバータ、DataTemplateセレクタなど)の仕事です。 – Will
@ウィル、したがって脚注#2 - 色の列挙は、使用すると分かりやすい例でした。私は、コンバーター(ビジネスルール、サービスへのアクセス)ではなくVMのものを評価する方が適切だったケースをたくさん見てきましたが、私の事例では単純で何も考えられませんでした。 – slugster