問題タブ [viewmodellocator]
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.
mvvm-light - MvvmLight ViewmodelLocator StaticResource の読み込みが停止する
MVVM Light を使用するたびに、常に最も奇妙なことを経験しています。ViewModelLocator を作成し、app.xaml に静的リソースとして登録します。
すべて正常に動作します。つまり、起動時に静的リソースが登録され、使用でき、次の場所に移動して確認できます。
しかし、突然、ランダムに、そして永久に、これは機能しなくなります。それはすべてのプロジェクトで私に起こりましたが、動作を停止するために行った一貫したアクションを特定できないため、理由を特定することはできません。また、元に戻す方法もわかりません。私はそれが働いていたときに持っていました...
次に進む唯一の方法は、次のように起動時にリソースを手動で登録することです。
そして最後にすべてが再び機能し始め、通常はそれで終わりです。
しかし、それは毎回起こります。
ロケーターのコンストラクターにブレークポイントを設定しましたが、確実にヒットしていません...誰かが私が間違ったことをした可能性があることを知っていますか?
編集:私はついに実際の例外を見つけました:
タイプ 'Microsoft.Practices.ServiceLocation.ActivationException' の初回例外が GalaSoft.MvvmLight.Extras.DLL で発生しました
これにより、以下に投稿した答えが見つかりました。ありがとう!
mvvm-light - Visual Studio 2015 で MVVMLight ViewModelLocator パスにバインドすると、DataContext が null になる
Visual Studio 2015 は RC ステータスであるため、バグを見つけたのか、プロジェクトで何か問題を起こしているのかわかりません。
MVVM Light を使用して Viewmodel Locator を作成し、各ビューモデルのインスタンスを返す静的プロパティを公開しました。ロケーターは、app.xaml に静的リソースとして登録されます。
通常、これを Page Xaml で次のような行にバインドします。
ただし、VS2015 で試す前にこの動作に問題があったことは一度もありませんが、Windows 10 用に作成している新しいプロジェクトでは動作していません。
プロジェクトを実行すると、DataContext は Page で null になります。これは、他の多くのプロジェクトで行ったように、XAML で明確に割り当てられています。確認したところ、ViewModelLocator 静的リソースが作成、初期化され、その MyViewModel プロパティにも必要な ViewModel が含まれています。そのため、VM またはロケーターに null 参照は絶対にありませんが、何らかの理由で、それをページの DataContext にバインドする XAML 宣言が無視されているように見えます...
ロケーターで MyViewModel の静的プロパティ ゲッターにブレーク ポイントを設定しましたが、呼び出されません...
したがって、これがVS2015、MVVM Light、Windows 10 SDK、またはWindows 10自体(現在のビルド10162)の問題であるかどうかはわかりません...
他の誰かがこの問題を経験しましたか?
wpf - WPF - ビュー モデルとサービスをインスタンス化するための動作の使用
ビュー モデルとサービスを作成するためのベスト プラクティスを見つけようとしています (サービスはサーバーと通信し、データをビュー モデルに返すだけです)。私は2つの異なるアプローチを見てきました。
- ビュー モデル ロケーターの使用
- 動作の使用 (これが良いアプローチかどうかはわかりません)
2 番目のアプローチでは、UserControl で動作を定義し、アタッチ イベントでビュー モデルのインスタンスとサービスのインスタンスを作成し、それらをすべてまとめます。
そしてあなたのユーザーコントロールxamlで
これはビヘイビアーの有効な使い方ですか、それともビューモデル ロケーター パターンを使用する必要があります。
wpf - 「..dictionary entry must have associated key」エラーを解決するには?
プロジェクト内の ViewModelLocator.cs の場所を解決するために、App.xaml ファイルに名前空間を追加しました。その後、ResourceDictionary から ns を参照しました。しかし、これらを追加すると 2 つのエラーが発生します。
..Each dictionary entry must have an associated key.
'ViewModelLocator' does not exist in XML namespace 'clr-namespace:MongoDBApp.ViewModels;assembly=MongoDBApp'
最初に、名前空間が ViewModelLocator の場所に対して正しいことを確認しましたnamespace MongoDBApp.ViewModels。
また、正しいと思われる ResourceDictionary の参照の構文も確認しました。このソリューションではエラーが解決されず、ソリューションを数回クリーンアップして再構築しました。
誰でもこのエラーを解決する方法についてアドバイスできますか?
App.xml ファイルの定義は次のとおりです。ResourceDictionary はファイルの下部にあります。
c# - Prism 6 の ViewModelLocator を使用して、分離されたアセンブリ内の ViewModel を解決する
ビューの DataContext を接続して、別の分離されたアセンブリからモデルを表示しようとしています。
Brian Lagunasは彼のブログで Prism の新しい ViewModelLocator の入門に何かを書きましたが、彼の解決策は特に規約をカスタマイズして ViewModelLocator がビュー モデル タイプを解決できるようにすることです。
私のシナリオ:
メイン プロジェクト (MyApplication.exe) には Bootstrapper、Shell、およびビューが含まれています。別のアセンブリ (MyApplication.Process.dll) には、すべてのビュー モデルがあります。
ブライアンの説明に基づいて、次の解決策を試しました。
上記の解決策は正しく機能しますが、これが最善の方法であるかどうかはわかりません。
私が望むのは、どのアセンブリでビューモデルを見つける必要があるかを Prism ViewModelLocator に伝えることです。つまり、Caliburn.Micro の同じアプローチを意味します (登録されているすべてのアセンブリでビューモデルを検索します)。
たとえば、アセンブリ名が「 Process 」という単語で終わっていない場合、アプリケーションが Prism Modularity をサポートしている場合、上記の解決策は機能しませんか?
あなたは私に何を提案しますか?
c# - 独自の ViewModelLocator の実装
ViewModelLocator を自分で実装したかったのです。そこで、世界で最もシンプルなアプリを実装しました。このチュートリアルのようにすべてを行いました。しかし、私はまだ例外を取得しています:
XamlParseException が発生しました
スローされる例外: PresentationFramework.dll の 'System.Windows.Markup.XamlParseException'
追加情報: 「'System.Windows.StaticResourceExtension' に値を指定すると、例外がスローされました。」行番号 '8' および行位置 '9'。
これはこの行です:
コードは次のとおりです。
App.xaml
App.xaml.cs
ViewModelLocator.cs
MainWindow.xaml
MainWindowViewModel.cs
この回答で私は見つけました:
使用前にリソースが定義されていることを確認してください (Xaml 解析順)。最も簡単な方法は、App.xaml に配置することです
だから私はApp.xamlにあります。誰かがここで何が起こっているのか説明してくれませんか? このエラーが発生するのはなぜですか?
xaml - UWP + MvvmLight - App.xaml リソースとして定義された ViewModelLocator がデザイン モードでアクセス拒否エラーを返す
MVVMLight を使用して UWP アプリを構築していますが、デザイン モードで ViewModelLocator に問題があります。
ViewModelLocator を作成しました:
そして、それを App リソースとして宣言しました。
今は動作するはずで、MainPageViewModel を MainPage DataContext として定義する可能性があるはずですが、Intellisense は下線を引いています
エラーあり
アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
ViewModelBase.IsInDesignModeStatic プロパティを使用していないときは、正しく機能し、MainPage でデザイン データを表示できることに気付きました。このようなものは動作します:
この奇妙な問題を解決するためのアイデアはありますか?