私は新しいプロジェクトを開始しており、this questionで推奨されている構造上に自分のプロジェクト構造を向けています。Viewは異なるアセンブリのViewModelを見つけません
今、私は奇妙な動作を見ています。 View-XAMLでdatacontextを設定しているとき、実行時に見つからない(XamlParseException
を取得)。コードビハインドファイルでコンストラクタに設定すると、すべて正常に動作しています。
異なるアセンブリを使用しているときに、この公式(文書化された)の動作が行われていますか、何か間違っていますか?
コード:
が機能していない:
MainView.xaml:
<UserControl x:Class="ViewsRoot.Views.MainView"
xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"
xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<UserControl.DataContext>
<viewModels:ShellViewModel />
</UserControl.DataContext>
MainView.xaml.cs
public MainView()
{
InitializeComponent();
// No DataContext set in codebehind-file
}
ワーキング:
MainView.xaml:
<UserControl x:Class="ViewsRoot.Views.MainView"
xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"
xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<!--<UserControl.DataContext>
<viewModels:ShellViewModel />
</UserControl.DataContext> -->
MainView.xaml.cs:
public MainView()
{
InitializeComponent();
DataContext = new ViewModelsRoot.ShellViewModel();
}
更新:
例外テキスト:
{ "ファイルまたはアセンブリ\ "ViewModelsRoot、PublicKeyToken = null \"またはその依存関係の1つが見つかりませんでした。システムは、指定されたファイルを見つけることができません "}
そして、私が見ることができる唯一の内側の例外がSystem.IO.FileNotFoundException
ある
アップデート2:。。
コメントのおかげで、私の避難所名前空間を忘れてしまいましたが、コードを表示するためにここを短縮しましたが、二重と三重チェックしました(また、再度)。DataContexts名前空間もintellisenseで埋められます。<viewModels:ShellViewModel />
はintelli-senseで書かれています。デザインメ... ...それ以上のアイデア?
更新3: xamlは、同じアセンブリ内のクラスにDataContextをバインドできるため、「正しく」解析されます。
内部例外はありますか? – Guillaume
@Guillaume私の更新された質問をご覧ください:) – basti
'UserControl'にいくつかの名前空間を忘れているかもしれません。これが役立つかどうか確認してください:http://stackoverflow.com/questions/8852912/xamlparseexception-in-view – Guillaume