問題タブ [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.

0 投票する
3 に答える
21985 参照

wpf - TextBox.TextChanged & ICommandSource

WPF UIのMV-VMパターンに従っています。コマンドを、TextBox の TextChanged イベントに、ViewModel クラスにあるコマンドに接続したいと考えています。このタスクを完了する唯一の方法は、TextBox コントロールから継承し、ICommandSource を実装することです。その後、コマンドが TextChanged イベントから起動されるように指示できます。これは、非常に単純に見えるものに対して、あまりにも多くの作業を行うように思われます。

TextChanged イベントを ViewModel クラスにフックする (TextBox をサブクラス化し、ICommandSource を実装するよりも) 簡単な方法はありますか?

0 投票する
8 に答える
2773 参照

wpf - コードと XAMLin WPF の境界線はどこにあるのでしょうか?

WPF と XAML について学べば学ぶほど、GUI の初期化とイベント処理のグルーのほとんどすべてを XAML またはコード (C# コードまたは VB.Net コードなど) で実行できることがわかりました。

私の質問は、WPF に長く取り組んできた人、そして理想的には WPF でアプリを出荷した人です。XAML とコードの間で「線を引く」のに最適な場所はどこでしたか? 可能な限り XAML を使用しましたか? コーディングしていない UI デザイナーとやり取りするのはどこだけですか?

この分野のヒントは、私自身や、WPF プログラミングを始めたばかりで、私たちができるすべての選択に麻痺している他のコーダーにとって非常に役立ちます!

0 投票する
7 に答える
13048 参照

c# - WPF を使用して仮想化された TreeView でノードを選択する

TreeView の仮想化でノードを手動で選択して表示する方法はありますか?

TreeView で使用しているデータ モデルは、VM-MV モデルに基づいて実装されています。各 TreeViewItem の IsSelected プロパティは、ViewModel の対応するプロパティにバインドされます。また、選択した TreeViewItem に対して BringIntoView() を呼び出す TreeView の ItemSelected イベントのリスナーも作成しました。

このアプローチの問題は、実際の TreeViewItem が作成されるまで ItemSelected イベントが発生しないことです。そのため、仮想化が有効になっていると、ノードの選択は TreeView が十分にスクロールされるまで何も実行されず、イベントが最終的に発生したときに選択されたノードに「魔法のように」ジャンプします。

ツリーに何千ものノードがあり、仮想化を有効にするとパフォーマンスが大幅に向上することをすでに確認しているため、仮想化を使用したいと思っています。

0 投票する
1 に答える
2516 参照

.net - Prismを使用しないWPFでの疎結合イベント

私は WPF アプリケーションに取り組んでおり、Model-View-ViewModel パターンを使用しています。

現在、アプリケーションは 2 つのモジュールで構成されています。

  • ツリーをブラウズしてノードを選択するための左パネル
  • 選択したツリー ノードのコンテンツを表示するメイン パネル。

これら 2 つのモジュールを分離したままにしたいのですが、左側のパネルでノードを選択したときに、メイン パネルがサブスクライブできるイベントを発生させる必要があります。Left パネルと Main パネルを結合したくないので、ViewModel クラスのインスタンスを共有したくありません。

Prism (WPF Composite Application Guidance) を使用したいのですが、現在、既存のアプリケーションを拡張していて、これ以上依存関係を導入することはできません。このプロジェクトは (3.5 ではなく) .NET 3.0 にもあるため、Prism は .NET 3.5 用に作成されているため、.NET 3.0 に戻す必要があります。

Prism では、疎結合イベント インフラストラクチャを使用してこれを解決します。これにより、任意のレイヤーの任意のクラスでイベントを発生させ、任意のレイヤーの任意のクラスの任意のイベントをリッスンできます。基本的に、イベントのパブリッシャーとサブスクライバーは切り離されています。

コマンドを使用してビューとビューモデルの間の疎結合を実現していますが、適切なクロスビュー通信を行う方法がわかりません。

ヒントや提案は大歓迎です。

私は特に、.NET 2.0/3.0 用の非常に軽量な pub/sub イベント モデル (LINQ のものはありません)、または 2 つのモジュールを結合せずにクロス ビュー (モジュール) 通信を実装する何かを探しています。

更新:グレンが提案するのと同様の方法でこれを解決することになりました。別の EventService (私は CommandProxy と呼んでいます) を用意し、それをサービス ロケーターのコンストラクターを介してすべての ViewModel に渡します (現時点では、IoC コンテナーの代わりにサービス ロケーターを使用しています)。CommandProxy は、Prism の DelegateCommand の拡張である MultiDelegateCommants のセットを公開します (複合 WPF ガイダンス)。基本的に、ビジュアル ツリーから切り離されたコマンドを許可し、複数のサブスクライバーをサポートします。

0 投票する
5 に答える
1664 参照

wpf - ビジネス オブジェクトを WPF の UI から分離する必要がありますか?

WPF のビュー モデル指向の方法では、UI でビジネス オブジェクトを使用したくなるだけです。これに関する問題を見たことがありますか?なぜ、またはなぜあなたはこれをしないのですか?

0 投票する
1 に答える
910 参照

wpf - XDocument 上の ViewModel

XML を表すツリービューを持つ WPF アプリケーションに取り組んでいます。XML を XDocument に読み込み、TreeView をこのオブジェクトにバインドします。

MVVM パターンを使用して、 XDocumentの上にViewModelを提供したいと考えています。ViewModel クラスに実装する必要があるものは何ですか。

私が考えているのは、

  1. TreeView の ContextMenu コマンドにバインドして、ノードの追加、ノードの削除、ノードの変更などを許可する RoutedCommands
  2. ビューの属性とノード名を実際に変更するロジック。

私は正しい方向に進んでいますか?よりクリーンでモジュール化すると同時に理解しやすくするには、他に何をすべきですか。

RoutedCommands を使用するか、ICommand インターフェイスを実装してコマンドを作成する必要がありますか? CommandBindings に添付プロパティを使用するのはどうですか? 私が話しているツリービューアプリでそれを行うのは理にかなっていますか? これを実装するために利用できるオプションが非常に多いため、少し圧倒されます。

この種のことを行うリンク、サンプルコードを持っている人はいますか? リファレンス実装は?

0 投票する
3 に答える
11568 参照

wpf - データ バインディングを使用して WPF でアニメーションを起動する

Model-View-ViewModel パターンを使用するように単純な WPF アプリケーションを適応させようとしています。私のページには、いくつかのアニメーションがあります。

現在、コード ビハインドでアニメーションを開始し、Completed イベントをリッスンして、次のコードで終了時に何かを実行できます。

ストーリーボードをViewModelにデータバインドして、ViewModelによって発生したイベントで開始し、終了時にそのViewModelにコールバックできるようにする方法はありますか?

0 投票する
14 に答える
76748 参照

wpf - INotifyPropertyChanged と ViewModel の DependencyProperty

Model-View-ViewModel アーキテクチャの WPF アプリケーションで ViewModel を実装する場合、それをデータバインド可能にする方法として 2 つの主要な選択肢があるようです。DependencyPropertyビューがバインドするプロパティに使用する実装を見てきましたが、INotifyPropertyChanged代わりに ViewModel を実装しているのを見てきました。

私の質問は、いつどちらを優先すべきかということです。パフォーマンスの違いはありますか? ViewModel の依存関係を WPF に与えるのは本当に良い考えですか? 設計を決定する際に、他に何を考慮する必要がありますか?

0 投票する
1 に答える
1097 参照

language-agnostic - タスクまたはダイアログのプレゼンテーション/ビューモデルはどのように見えますか?

Model/ViewModel/View アーキテクチャに移行しようとしていますが、選択ダイアログをこのパターンにプッシュしようとすると行き詰まりました。選択肢のリストの取得 (ビジネス/プレゼンテーション ロジック) と実際の表示/選択メカニズム (ビュー) を分離して、前者を異なるビュー (コンボ ボックスとモーダル ダイアログなど) で再利用したいと考えています。

このような選択タスクの ViewModel はどのようになりますか? または、私は懸命に努力していますか?これをビューのみに実装する必要がありますか?

0 投票する
5 に答える
7426 参照

c# - MV-VM設計の質問。ViewModelからViewを呼び出す

WPFアプリケーションのMV-VMを調べ始めたところです。この特定の問題を除いて、これまでのところすべてが理にかなっています...

Searchと呼ぶViewModelがあります。このViewModelはデータグリッドにバインドし、アイテムの結果を一覧表示します。これで、別のビュー、アイテムの詳細を表示する必要があるコマンドがあります。

検索ビューに別のビューを表示するロジックを配置することは正しくないように思われ、まったくテストできません。

これが私のViewModel実装ですが、テストできません...

ViewModelメソッドからのビューを表示するロジックはこのパターンでどこに行きますか?