我正在啓動一個新項目並將其項目結構定向在this question中推薦的結構上。查看未在其他裝配中找到ViewModel
現在我看到了奇怪的行爲。當我在View-XAML中設置datacontext時,在運行時找不到(獲取XamlParseException
)。當我將它設置在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();
// 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();
}
更新:
異常-Text是:
{「的文件或程序集\「ViewModelsRoot,PublicKeyToken = null \」或其某個依賴項未找到。該系統找不到指定的文件「}
而唯一的內部異常,我可以看到的是一個System.IO.FileNotFoundException
更新2:
感謝您的意見,但我避風港忘了命名空間,爲了顯示代碼,我在這裏縮短了它,但是我再次進行了雙重和三重檢查,DataContexts命名空間也被intellisense填充,整個<viewModels:ShellViewModel />
是由智能編寫的,所以它在設計時間... ...所以更多的想法?
更新3: 由於我能夠將DataContext綁定到同一個程序集中的類,所以xaml得到了「正確」解析。
有沒有內部異常? – Guillaume
@Guillaume請參閱我更新的問題:) – basti
您可能忘記了'UserControl'中的一些命名空間。檢查是否有幫助:http://stackoverflow.com/questions/8852912/xamlparseexception-in-view – Guillaume