私は、自分のウィンドウに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. ui-gridを使用して列の値を更新する方法
- 3. WPFのバインディングからUI更新を一時停止する方法
- 4. プロパティの変更コールバックでコンバーターや更新を使用してバインディングを使用する方が速いですか?
- 5. バックグラウンドワーカーを使用してUIを更新する
- 6. UIを更新して更新が完了するまで待つ方法
- 7. ドメインサービスクラスを使用して更新プログラムを適用する方法
- 8. $ .ajax {}を使用してajaxを使用してhtmlを更新する方法
- 9. librsvg Pythonバインディングを使用してsvgイメージファイルのサイズを変更する方法
- 10. HJCacheを使用してイメージを更新する方法は?
- 11. androidのbaseadapterを使用してカスタムリストビューを更新する方法
- 12. Javaを使用してフォルダを更新する方法
- 13. vb.netでlistviewを使用してデータベースを更新する方法
- 14. Reduxを使用して状態を更新する方法は?
- 15. C#を使用してピボットテーブルデータソースを更新する方法は?
- 16. VBScriptを使用してレジストリ設定を更新する方法?
- 17. KVOを使用してプロパティを更新する方法
- 18. d3.jsを使用して軸を更新する方法
- 19. WCFサービスを使用してエンティティを更新する方法
- 20. ViewDataを使用してリストボックスの値を更新する方法
- 21. プライマリキーを使用してデータベースを更新する方法
- 22. カーソルを使用してレコードを更新する方法
- 23. oleDbDataAdapter.Update(myDataSet)を使用してExcelファイルを更新する方法
- 24. データバインディングを使用してC#グラフコントロールを更新する方法
- 25. AndroidでASyncTaskを使用してCustomAdapterを更新する方法
- 26. mvc2のTrypUpdateModelを使用してViewDataを更新する方法
- 27. リストページでActionLinkを使用してデータベースを更新する方法
- 28. dataadpterを使用してデータベースのデータを更新する方法
- 29. jsonとjqueryを使用してチェックボックスを更新する方法
- 30. nhibernateを使用してレコードを更新する方法
ビューモデルでコンバージョンを実行することは、実際には正しく実行するのが難しいです。試行したほとんどの人は、モデルとビューモデルの間でプロパティ変更通知を取得し、メモリがリークしてしまいます。 –
私はあなたがモデルとVMの責任のいくつかを融合させていると思います。そして、伝統的に、状態を視覚的表現( 'enumを色に変換する ')に変換するなどのタスクは、VMの仕事ではなくView(カスタムコンバータ、DataTemplateセレクタなど)の仕事です。 – Will
@ウィル、したがって脚注#2 - 色の列挙は、使用すると分かりやすい例でした。私は、コンバーター(ビジネスルール、サービスへのアクセス)ではなくVMのものを評価する方が適切だったケースをたくさん見てきましたが、私の事例では単純で何も考えられませんでした。 – slugster