問題タブ [mvvm]
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# - WPFUserControlにICommandをアタッチします
画像を含むシンプルなボタンを実装しました。
ご覧のとおり、このUserControlにICommandをアタッチできるようにするために、ButtonCommandプロパティを公開しています。
次に、ボタンを宣言すると、次のようになります。
<uc:ImageButton Grid.Row="1" Grid.Column="0" ButtonCommand="{Binding AttachContextCommand}" ButtonImage="{StaticResource AssociateImage}" ButtonText="Associer"/>
そしてbadaboom、ImageButtonをクリックしても何も起こりません。ImageButtonを単純なボタンに置き換えると、ICommandが呼び出されます。
Buttonクラスを拡張してICommandをバインドしようとしましたが、もう一度、機能しませんでした...
感謝します!
どうも。
wpf - ViewModel は、サービスのデータがいつ更新されたかをどのように知ることができますか?
私のアプリケーションには、単一のサービス (リポジトリ、DAO など) を持つ複数の ViewModel があります。これをWidgetServiceと呼び、それらに注入します。
これらの ViewModel の 1 つが、すべてのユーザー ウィジェットのリストであるとしましょう。もう 1 つは、これらのウィジェットの 1 つを編集/作成するための ViewModel です。
ユーザーは、WidgetListViewModel に基づく WidgetListView でウィジェットのリストを表示し、ボタンをクリックして新しいウィジェットを追加できます。この新しいウィジェットを作成するために、CreateWidgetViewModelが新しく作成され、一部の UserControl/Window の DataContext に挿入されます。したがって、CreateWidgetViewでCreateWidgetViewModelを表示する DataTemplates の魔法を使用します。また、CreateWidgetViewModelの新規作成は、必ずしもWidgetListViewModelのスコープ内で行われるとは限りません。
WidgetListViewModelの場合、WidgetServiceのインスタンスが注入されました。CreateWidgetViewModelには、この同じWidgetServiceインスタンスが挿入されました。
ここで、ユーザーがCreateWidgetViewで保存をクリックすると、 WidgetServiceのSaveメソッドが呼び出され、ウィジェットが永続化されます。ここで、WidgetListViewModelに、表示する新しいウィジェットがあることを通知する必要があります。
長いビルドアップは、次の質問につながります:新しいウィジェットを表示する必要があることをWidgetListViewModelに知らせるにはどうすればよいですか?
Microsoft の担当者が、ViewModel がサブスクライブしているサービスのイベントを使用して、この種のことを行っているビデオを見たことがあります。ただし、これの欠点は、サービスがビューモデルよりも長く存続する場合、サービスがGCされるまでビューモデルがGCされないことです。ViewModel に IDisposable を追加できます。しかし、ViewModel が DataTemplates を介して UI でのみ表現されている場合、いつ/どのように Dispose を呼び出すのでしょうか?
これに関する提案はありますか?
明確にするために、MVVM の私の解釈は Josh Smith の解釈に最もよく似ていると言えます。少なくとも、私の MVVM アーキテクチャは Crack.Net ソースにあるものとほぼ一致しています。
mvvm - MVVM ルーティングおよびリレー コマンド
RoutedCommandとRelayCommandの違いは何ですか? RoutedCommand をいつ使用し、MVVM パターンで RelayCommand を使用するのはいつですか?
apache-flex - MVVM - 何を含むべきか... 何を作成すべきか
私は、MVVM パターンを使用してすべてがどのように適合するかについて頭を悩ませています。実際にはすべて非常に単純に思えますが、それを実装しようとすると、コーディングしようとする他のさまざまなルールに違反しているようです。
余談ですが、Silverlight や WPF ではなく、Flex を使用してパターンを実装しようとしています。そのため、これを行うべきではない正当な理由がある場合は、それを聞いてみたいと思います。
複数のビューがあるという問題があります。ページに同時に 2 つのビューを表示しなければならない場合があります。時々、単一のビューに戻ります。私の通常の Flex 脳では、他のすべてのビュー (コード ビハインドと同様) を含むコード ビハインドを含むメイン ビューがあります。そのメイン ビューは、他の個々のビューの切り替えを行います。
これを MVVM に実装しようとするとViews
、ViewModels
. ViewModel
アプリケーション全体の状態とApplicationView
そのデータへのバインドを作成し、サブビューのすべての切り替えを行うとし ましょう。
では、サブビューのビュー モデルをどこに作成すればよいでしょうか。の中で試してみましたが、うまくいきませApplicationView
んでした。そして、アプリケーションビューの外で試して、そのインスタンスを渡してからApplicationView
、サブモデルをそれにバインドしました。何か不足していますか?これらの方法はどれも、これを分離しようとする全体のポイントに適合していないようです。
この問題を説明している良い本やリンクは大歓迎です。
乾杯、ジェームズ
silverlight - Prism 2 SL : ボタンがクリックされたときにリージョンからビューを削除する
私は Prism を初めて使用し、Prism 2 アプリケーションでビューを非アクティブ化するためのベスト プラクティスを決定しようとしています。ユーザーがビューのボタンをクリックすると、ビューを非アクティブ化します。ボタンがクリックされると、ビューはコマンドを実行しています。
ビュー モデルはコマンドを受信していますが、ビューモデルにはリージョン マネージャーへの参照がありません。
ビュー モデルはリージョン マネージャーについて認識している必要がありますか? また、ビューモデルがそれへの参照を持っていたとしても、それを含む領域の非アクティブ メソッドにビュー インスタンスを渡す必要があります。
アプリに MVVM パターンを使用しています。
wpf - モデル ビュー ViewModel で新しいウィンドウを表示するのに最適な場所
MVVM アプリケーションがあります。ViewModel の 1 つは、ObservableCollection に値を設定する 'FindFilesCommand' です。次に、同じ ViewModel に「RemoveFilesCommand」を実装します。このコマンドは、さらにユーザー入力を取得するためのウィンドウを表示します。
MVVMパラダイムを維持しながらこれを行うための最良の方法はどこですか? どういうわけか:
ViewModel では間違っているようです。
乾杯、
スティーブ
wpf - この WPF の例を MVC、MVP、または MVVM に対してさらに分離するにはどうすればよいですか?
この WPF アプリケーションのイベントを次のように分離しました。
デカップリングを続ける最善の方法は何ですか?
Shell.xaml:
Bootstrapper.cs:
Shell.xaml.cs:
Customer.cs:
上記のコードShell
は、モデルからビューを正常に分離するため、独自の方法で「処理済み」を処理Customer:IPerson
するモデルなどにスワップできます。Employee:IPerson
それが最初の目標でした。
でも今:
Processed
ビューでイベントを発生させる MenuItem または ListView とも通信でき、それを呼び出す要素である必要さえないように、メソッドを Buttonとの通信から切り離すにはどうすればよいですか、例えば単体テストクラス?- 送信者 (ボタン) 以外のビューの他の要素を変更するにはどうすればよいですか?たとえば、シェルのステータス バーを変更するにはどうすればよいですか? 2 つの方法があります。
- すべてのビューを保持するコンテナーを構築し、作成時にコンテナーを Customer に挿入することもできます。その後、顧客はコンテナーを調べて、呼び出し元のビューを必要に応じて操作できます (ただし、イベントを送信したビューと何らかの方法で一致させる必要があります)。コンテナ内のビューは同じものとして)
- イベントを発生させるときに、イベント引数を使用してビュー全体 (Window オブジェクト) をモデルに送信することもできますが、モデルには、実行時に操作できる領域の種類を (インターフェイスを介して) 知る何らかの方法が必要です。
- このアプリケーションを、よりデカップリングされた設計の方向にどのように継続しますか?
- これは、MVC、MVP、MVVM など、実際にはどのようなパターンですか? ビュー (シェル) とモデル (顧客) しか表示されません。
- プレゼンターはどのように適合しますか?
- ViewModel はどのように適合しますか?
- コントローラーはどのように適合しますか?
wpf - WPF コンテキスト メニューが正しいデータバインド項目にバインドされない
タブ ページにあるユーザー コントロールのコンテキスト メニューでコマンドをバインドするときに問題が発生します。メニューを初めて使用するとき (タブを右クリック) はうまく機能しますが、タブを切り替えると、コマンドは最初に使用されたデータバインドされたインスタンスを使用します。
コマンドにバインドされたボタンをユーザーコントロールに配置すると、期待どおりに機能します...
誰かが私が間違っていることを教えてもらえますか??
これは、問題を公開するテスト プロジェクトです。
アプリ.xaml.cs:
Window1.xaml:
UserControl1.xaml:
CompanyViewModel.cs:
PersonViewModel.cs:
TestCommand.cs:
Person.cs:
wpf - WPF MVVM ComboBoxのSelectedItemまたはSelectedValueが機能しない
アップデート
少し調べた後。問題と思われるのは、Item ソースの読み込みが完了する前に SelectedValue/SelectedItem が発生していることです。ブレークポイントに座って数秒待つと、期待どおりに動作します。どうやってこれを回避するのかわかりません。
更新終了
ComboBoxでMVVMを使用してWPFで使用するアプリケーションがあります。以下はViewModelの例です。私が抱えている問題は、ページを離れて元に戻すときに、ComboBox が選択されている現在の値を選択していないことです。
モデルを見る
この例では、MyObject に 2 つのプロパティ (Text と Id) があるとします。ComboBox の XAML は次のようになります。
XAML
ページに戻ってオブジェクトが再構築されたときにこれをどのように構成しても、ComboBox は値を選択しません。ただし、オブジェクトはプロパティの get を介して正しいオブジェクトを返しています。
これが単に ComboBox と MVVM パターンの動作の問題なのかどうかはわかりません。行っているテキスト ボックスのバインディングは正しく機能します。
silverlight - Silverlight 3 で .NET RIA サービスと MVVM を組み合わせるには?
.NET RIA サービスは、Silverlight の n 層フレームワークとして説明されています。このフレームワークと Model-View-ViewModel パターンとの関係はどうなっているのだろうとずっと考えていました。それらは対立していますか、それとも相乗的な組み合わせの可能性が見えますか?