問題タブ [viewmodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - MVVMパターン、ViewModelDataContextの質問
ViewModel間で通信する方法を理解する必要があります。私はMVVMを初めて使用するので、親切にしてください。
これはばかげた例です
クラス定義(ParentViewModelでChild.PropertyChangedイベントをフックしたと仮定します):
これがリソース辞書に表示されるものです
およびChildViewのコードビハインド:
明らかな問題は、ChildViewが(DataTemplateからの選択を介して)インスタンス化されると、新しいChildViewModelクラスが作成され、ParentViewModelがそれにアクセスできないことです。
では、ビューのDataContextを、DataTemplateが選択される原因となった元のViewModelにインスタンス化するにはどうすればよいですか?
明らかな修正は、ChildViewModelのプロパティをParentViewModelにマージすることですが、再利用するために分離したいと思います。
答えは些細なことだと確信しています。それが何であるかを知りたいだけです。:)
前もって感謝します。
wpf - ViewModel で (View)Model のコレクションを表示する方法
C#/WPF の MVVM 設計について質問があります。いくつかのデモ アプリケーションを見てきましたが、実際には問題を解決できませんでした。私のアプリケーションは、他のオブジェクトを含むオブジェクトで構成されています。親子関係によく似ています。
私の質問は次のとおりです。
- children 属性は ViewModel である必要がありますか?
- その場合、 ViewModels を介して既存の子オブジェクトを含む新しい親オブジェクトを作成するにはどうすればよいですか?
次のシナリオのような sth があります。
ここでの問題は、ParentVM に ChildVM が含まれているが、実際の Parent (ParentVM の内部にある) には ChildVM オブジェクトに含まれる Child オブジェクトがないことです。また、子オブジェクトを複製することは良い考えではないと思います。冗長性につながり、アプリケーションのコンテキストでは、新しい子オブジェクトを作成する必要も可能性もないためです。
また、次のクラス設計についても考えました。
ただし、これは、ParentVM の Child オブジェクトを操作したい場合、Model を直接操作することを意味します。
一方、(モデル) 親を空白のままにして、ParentVM を使用してデータベースに新しい親を作成することもできます。しかし、これは問題を処理する良い方法ですか?
c# - MVC カスタム ビューモデルの問題
私は少し MVC 初心者なので、初歩的な質問であることをご容赦ください。
フォームに複数選択リストを含めるために、カスタム ビューモデルを作成しました。
最初の試行で複数選択の最初の値しか取得できなかったことがわかりました。これは、作成アクションが次のようになったためだと推測しました。
ということで、以下のように変更することにしました。
MultiSelectList から完全な出力を取得し、それに応じて解析できるようにします。問題は、これはビューモデル用のパラメーターなしのコンストラクターがない (そして存在しない) と不平を言うことです。これを修正する正しい方法がわかりません。私が試したことは何もうまくいかず、本当に助けが必要です!
それが役立つ場合、私のビューは次のようになります。
wpf - ビュー ロジックをモデルから除外し、ビジネス ロジックを MVVM のビュー モデルから除外するにはどうすればよいですか?
モデルに INotifyProperyChanged や INotifyCollectionChanged などの UI 固有のものを追加したり、さまざまなイベントを大量に作成したり、さまざまなイベントを作成したりせずに、モデルの変更をビュー モデルに通知する方法がわかりません。それらはUI固有のものであり、モデルから離れるべきです。
それ以外の場合は、すべてが最新であることを確認するために、ビュー モデル内のすべてのビジネス ロジックを複製する必要があります。
私のモデルにあるトリッキーなものの 1 つは、"Category" クラスのプロパティです。これはツリー構造と考えることができ、プロパティはすべてリーフノードの子孫です。このモデルでは、すべての子を介してプロパティがその場で再帰的に生成されますが、これはすべて問題ありません。ただし、ビューモデルはそのプロパティにバインドする必要があり、いつ変更されるかを知る必要があります。ビューモデルに対応するようにモデルを変更する必要がありますか? 私がそうすると、ビューモデルはこの時点で実際には何もしません。モデルは必要な変更の通知をすべて発生させ、ビューはモデルに直接バインドできます。また、モデルがソースを持っていないものである場合、どうすればこれを回避できますか?
c# - IEnumerable と文字列配列 - 一致する値を見つける
背景: ビュー モデルに MultiSelectList を含む ASP.NET MVC ビュー ページがあります。その MultiSelectList オブジェクトからの SelectedValues のリストをラベルに入力したいと考えています。リストは、IDName のタイプで MultiSelectList 内に格納されます。
したがって、MultiSelectList.Items は IDName のリストを含む IEnumerable です。このリストに対して foreach を実行し、.Name を取得して各エントリの名前を取得できます。しかし、ID が MultiSelectList.SelectedItems にある場合にのみこれを行いたいと思います。これは string[] のように見え、次のようになります。
したがって、IDName.ID が SelectedItems リストにあるときに IDName.Name を取得したいだけです。
私はMVCとC#の両方にかなり慣れていないので、それを行う最善の方法がわかりません。助言がありますか?
更新 #2:
OK、私は密集していました。これは機能します:
SelectedValues は、実際には string[] を含む IEnumerable です。
wpf - MVVM Tabcontrol 変更タブ
wpfでmvvmアプリを開発しています。テキストボックスにテキストがある場合、ユーザーがタブを変更できないようにするための要件が追加されました。
ビューモデルでこれを完全に行う最良の方法は何ですか? タブコントロールに関連付ける依存オブジェクトコマンドがないため、タブ項目をブロックする方法がわかりません。独自のタブコントロールをロールして、SelectionChanged イベントの周りに ICommand を構築する必要がありますか?
SelectionChanged イベントのビューのコード ビハインドにコードを入れるだけでよいでしょうか?
私が思いもよらなかった代替手段はありますか?
wpf - MVVM ICommand の代替
wpf mvvm アプリの作成を開始しました。ビューモデルの重要な要素は、ビューがビューモデルとやり取りできるようにする疎結合の方法を持つ一連の ICommand であるようです。
私の質問はこれです。メソッドに直接バインドできないのはなぜですか?
ICommand オブジェクトにデリゲートを挿入できる Josh Smith の ICommand の RelayCommand 実装を使用しましたが、実際には、ボタンを押してビューモデルのメソッドを呼び出せるようにする簡単な方法はありますか?
私はMVVMを初めて使用します。啓発が必要だと思います
wpf - Onyxを使用したMVVMでの親/子ビューモデル関係のベストプラクティス?
みんな!
私は現在、Onyx フレームワークを介して MVVM を使用する小さな WPF プロジェクトに取り組んでいます。
私の現在のビューアーキテクチャは次のようなものです:
私が今抱えている問題は、2 つのビューモデル間の関係を実装する方法です。私は現在、基本的に TranslationView に独自の ViewModel を持たせ、親 ViewModel へのリンクはありません。
問題は、MainView を介していくつかのファイルを開き、コンテンツを解析して TranslationView に表示できるようにしたいということです。これを行うための推奨される方法はありますか?
TranslationViewModel を MainViewModel のプロパティとして使用し、それを TranslationView の DataContext として使用することを考えましたが、Onyx のモデルに対して実行して、タイプ (オブジェクトではない) 参照を介して ViewModel を定義するようです。
asp.net-mvc - 自動生成されたコントロールを使用したフォームの適切な送信
に基づく: MVCHtml.CheckBoxおよびフォーム送信の問題
次の例を考えてみましょう。意見:
コントローラ:
提案された解決策は、MVCの概念から外れているように見えるRequest.Formの手動解析に関するものでした。このコントローラーメソッドの単体テスト中に問題が発生します。この場合、入力パラメータとして渡されるViewModelの代わりに、モックRequest.Formオブジェクトを生成する必要があります。
Q:このようなフォームを送信して、送信されたコントロールのコレクションを含むViewModelオブジェクトが入力パラメーターとしてコントローラーメソッドに渡されるようにする他の解決策はありますか?
例えば:
また
等