問題タブ [mvvm-light]
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# - 複数のペア「View-ViewModel」を作成するにはどうすればよいですか?
MVVM-Lightに基づくアプリケーションを構築しています。同じビューの複数のインスタンスを作成する必要があり、それぞれが独自のViewModelにバインドする必要があります。
デフォルトViewModelLocator
では、ViewModelsがシングルトンとして実装されているため、同じViewの異なるインスタンスが同じViewModelにバインドされます。
VMLocatorでViewModelを非静的オブジェクトとして作成することもできますが(new VM()...を返すのと同じくらい簡単です)、それは部分的にしか役に立ちません。実際、開いているウィンドウを追跡する必要があります。それでも、各ウィンドウは他のいくつかのウィンドウを開く可能性があります(ただし、種類は異なります)。この状況では、親ビューとそのすべての子に対して何らかの操作を実行する必要がある場合があります。たとえば、ビューPを閉じる前に、そのすべての子(ビューC1、ビューC2など)を閉じたい場合があります。
したがって、これを達成するための簡単で簡単な方法はありますか?または、従うようにアドバイスするベストプラクティスはありますか?
貴重なご協力をよろしくお願いいたします。
乾杯、
ジャンルカ。
silverlight - MVVM - ナビゲーションとブレンド機能を備えたマスター/詳細シナリオ
理解しやすいように、必要なものから始めます。
- PersonViewModel のリストボックスを持つページ (Master.xaml) があります。
- ユーザーがリストボックスから PersonViewModel を選択すると、選択した PersonViewModel の詳細 (Details.xaml) ページに移動します。
- 詳細ページは、ユーザーがページに移動したときにのみ実行したい余分な重い作業を行います。(マスターリストボックスの各 PersonViewModel にあまり多くのものをロードしたくありません)
では、「ブレンド性」を維持しながら、ナビゲーションを使用してマスター/詳細シナリオをどのように処理しますか?
私はこの 1 週間、ぐるぐる回っています。非常に一般的であるべき何かに対する明確な解決策がないように思われますか?
ribbon - RibbonControlsLibraryを使用したMVVMLightToolkitサンプル
「MVVMLightToolkit」のプレイを開始したばかりですが、RibbonCommandとRelayCommandをどのようにマージできるのでしょうか。MVVMLightToolkitとRibbonControlsLibraryを組み合わせたサンプルはありますか?
クラウディオに感謝します
.net - Silverlight 4 + MVVM + KeyDown イベント
知識を広げるために、MVVM デザイン パターンを使用して Silverlight 4 でサンプル ゲームを構築しようとしています。Laurent Bugnion の MvvmLight ツールキットも使用しています (ここにあります: http://mvvmlight.codeplex.com/ )。今やりたいことは、特定のキーを押してキャンバス内でシェイプを移動することだけです。私のソリューションには、Player.xaml (四角形のみ。これは移動されます) と MainPage.xaml (Canvas と Player コントロールのインスタンス) が含まれています。
私の理解では、Silverlight はルーティング イベントのトンネリングをサポートしておらず、バブリングのみをサポートしています。私の大きな問題は、Player.xaml が KeyDown イベントを認識しないことです。これは常に最初に MainPage.xaml によってインターセプトされ、上にバブルするため、子コントロールに到達することはありません。Player を移動するロジックが PlayerViewModel クラスにあることを望みますが、MainPage から明示的に渡さなければ KeyDown イベントの発生を Player が認識できないと思います。
最終的に、ハンドラー ロジックを MainPageViewModel クラスに追加しました。今私の問題は、MainPageViewModel が Player.xaml を認識していないため、KeyDown イベントを処理するときにこのオブジェクトを移動できないことです。ViewModels は関連付けられた Views の知識を持っていないはずなので、これは予想されることだと思います。
それほど多くの言葉ではありません... MainPage.xaml 内のこの Player ユーザー コントロールが KeyDown イベントを直接受け入れて処理できる方法はありますか? そうでない場合、MainPageViewModel がビューの子コントロールと通信するための理想的な方法は何ですか? 分離コード ファイルにコードをできるだけ入れないようにしています。テストを容易にし、UI をロジックから切り離すために、ViewModel にロジックを配置するのが最善のようです。
(メインページ.xaml)
(MainViewModel.cs)
前もって感謝します、ジェレミー
c# - EventToCommand を介して LayoutRoot を RelayCommand に送信するにはどうすればよいですか?
トリガーを使用したグリッドの例:
私のViewModelでは、LoadedCommandを次のように設定しました:
ViewModel イニシャライザには、次のようなものがあります。
次に、私の DoLoaded でこれをやろうとしています:
ビューのグリッドで Loaded="" を取り除こうとしていて、代わりに RelayCommand を実行しようとしていることがわかります。問題は、OriginalSource が何も返さないことです。ロードされたイベントはこの方法で正常に実行されていますが、RoutedEventArgs を介してグリッドを取得する必要があるようです。
CommandParameter="{Binding ElementName=LayoutRoot}" を使用して EventCommand で Grid を渡そうとしましたが、F5 キーを押してプロジェクトを実行すると、VS2010 がクラッシュします。
何か案は?または、これを行うより良い方法はありますか?ビュー C# で Loaded イベントを実行してから、ビュー コード ビハインドで ViewModel を呼び出しましたが、より適切なバインディングを行いたいと考えています。Views コード ビハインドで ViewMode と対話するのはハックのように感じます。
wpf - MVVM Light Toolkit を使用して Blendable アプリケーションを作成する
少し前に、Blend で作成した GUI と Visual Studio で作成した GUI の切り替えに関する質問を投稿しました。Blend プロジェクトを VS2008 プロジェクトに追加し、スタートアップ アプリケーションを変更して再コンパイルすることで、正常に動作するようになりました。これにより、完全に異なる GUI を持つ 2 つのアプリケーションが作成されますが、まったく同じ ViewModel および Model コードが使用されます。私はそれでかなり幸せでした。
Laurent Bugnion の MVVM Light Toolkit について学んだので、同じバックエンド コードで複数の GUI をサポートするこのプロセスを可能にする彼の努力を大いに活用したいと思います。問題は、ツールキットがこれを容易にするか、それとも以前のやり方で行き詰まっているかということです。
私は MIX10 の彼のビデオを見て、オンラインでいくつかの記事を読みました。ただし、別の DLL をロードすることで、ユーザーがその場で動的に GUI を切り替えることができるクリーンな方法があることを示すものはまだ見たことがありません。VS2008 と Blend 3 用の MVVM テンプレートがありますが、アプリケーション用に両方のタイプのプロジェクトを作成し、VS2008 ソリューションから特定のファイルを参照する必要がありますか?
更新 Laurent のサイトでいくつかの情報を読み直しましたが、VS2008とBlendで同じソリューションを開くことがテンプレートの要点であることを忘れていたようです。とにかく、この新しい視点では、テンプレートは実際には単一の GUI を使用することを意図しているように見えます。ほとんどの場合、Blend で完全に設計されている可能性が高く (VS2008 によるデバッグの利便性を考慮して)、2 つの異なる ViewModels を使用できます。設計時、および実行時用です。
したがって、私の質問に対する答えは、以前のソリューションと MVVM Light Toolkit を組み合わせて使用したいということのように思えます。前者を使用すると、コア コードの周りに複数の異なる GUI を作成できますが、後者を使用すると、設計時の ViewModel を使用して、Blend で派手な GUI を簡単に設計できます。誰でもこれについてコメントできますか?
silverlight - 単純なバインディングの質問、MVVM Light Toolkit を使用して DataTemplate のボタン コマンドにバインドできない
DataTemplate 内のボタンにバインドしようとしましたが、あまり成功しませんでした。ボタンは発火しません。ボタン クリックは、DataTemplate の外部で正常に機能します。しかし、Click="button_click" を作成すると、クリック ボタンが起動されます。ボタン コンテンツも完全にバインドします。
説明する例.
コマンドが起動しないのはなぜですか? これをどのように処理すべきかについてのアドバイスはありますか? この例は、実際の問題の単純化されたバージョンです。現在、リストボックスを使用していません。リストボックスで同じ問題を再現しただけです..
c# - MVVMライトメッセンジャークラス
MVVM Lightでメッセンジャークラスを使用する方法について、サンプル/リンク/シンプルなイラスト/ビデオ/デモを提供できる人はいますか?
.net - MVVM-Light: ビルドすると、ターゲット "RunCodeAnalysis" がプロジェクトに存在しませんか?
自分で mvvmlight アプリを作成しました。f5 を押してコンパイルし、すべて正常に動作すると、wpf ウィンドウが表示されます。
しかし、ビルドを実行するとエラーが発生します
Visual Studio 2010 プロフェッショナル版 RTM を使用しています
奇妙なのは、.NET Framework 4 クライアント プロファイルに設定されているターゲット フレームワークだけです。
なぜこれが起こるのか知っている人はいますか??
.net - Silverlight + MVVM-Light での SelectionChanged イベント バインディング
ComboBox コントロールの「SelectionChanged」イベントのハンドラーには、次のシグネチャがあります。
Silverlight 4 および MVVM-Light でそのプロパティを ViewModel オブジェクトの対応するメソッドにバインドする方法は?
私の知る限り、次のようなことをする必要があります。
問題は、MVVM-Light フレームワークの RelayCommand クラスが 2 つの汎用パラメーターをサポートしていないことです...
この場合の解決策または回避策はありますか? コントロールイベントを2つのパラメータを持つメソッドにバインドする方法は?
そして別の問題: ComboBox には、このコマンドをバインドするための "Command" プロパティがありません..? ViewModel へのイベントを取得するにはどうすればよいですか?
ありがとう。
PSコンボボックスのSelectedItemプロパティを使用しようとしましたが、ComboBoxの実装が正しくないようで、機能しません...