名前空間に実際にOverview
ユーザーコントロールがあるとするViews.Module
と、これはCMによって検出されません。
Model
CMは、元のVM名前空間/タイプ名の一部を削除して検索します。正確なルールは思い出せませんが、カスタマイズすることはできます
デフォルトのルールの場合、正しい名前空間は次のようになります。Views.Model.Overview
名前変換のドキュメントを確認することをお勧めします。
https://caliburnmicro.codeplex.com/wikipage?title=View%2fViewModel%20Naming%20Conventions&referringTitle=Documentation
また:
あなたがVMModelViewModel
に電話をかけたので、nametransformerがModel
VM名の先頭からも削除する可能性があると推測するのは危険です(ただし、正規表現は文字列の末尾のみをチェックするので、大丈夫かもしれません!)
したがって、上記の名前空間の変更が機能しないと仮定すると、ターゲットのビュー名が...になる可能性があります。
最後に-デバッグロガーを実装する価値があるかもしれません-CMはログインターフェイスに対して多くの情報を書き込みますGetLog
。実装を提供するメソッドを提供する必要がありますILog
(通常、ストリームに書き込むメソッドDebug
はトラブルシューティングに十分です)
あなたはあなた自身をBootstrapper.Configure
提供することによって(または十分に早い他のどこでも)これを行うことができますFunc
LogManager.GetLog
LogManager.GetLog = (type) => { return new DebugLogger(); };
そして実装ILog
しDebugLogger
ます(それはあなたに任せてください!)
編集:LocateForModel
ブートストラッパーコードでfuncを再実装してみてください:
ViewLocator.LocateForModel = (model, displayLocation, context) =>
{
var viewAware = model as IViewAware;
if (viewAware != null)
{
var view = viewAware.GetView(context) as UIElement;
if (view != null)
{
LogManager.GetLog(typeof(ViewLocator)).Info("Using cached view for {0}.", model);
return view;
}
}
return ViewLocator.LocateForModelType(model.GetType(), displayLocation, context);
};
次に、デバッグできます(これは、v1.4からソースからリッピングしたものなので、使用しているものによっては1.5がリリースされているため、ソースをもう一度確認することをお勧めします)
https://caliburnmicro.codeplex.com/SourceControl/changeset/view/ae616b841924#src/Caliburn.Micro.Silverlight/ViewLocator.cs
編集:これはSilverlightバージョンでもあるため(コンパイラー条件の一部を取り除いたばかりです)、ソースから最新バージョンを取得する必要があります。