Tôi đang bắt đầu một dự án mới và định hướng dự án của tôi trên cấu trúc được đề xuất trong this question.Chế độ xem không tìm thấy ViewModel trong các Hội đồng khác nhau
Bây giờ tôi thấy có hành vi lạ. Khi tôi thiết lập datacontext trong View-XAML, nó không được tìm thấy trong thời gian chạy (nhận được XamlParseException
). Khi tôi đặt nó trong hàm tạo trong tệp codebehind, mọi thứ đều hoạt động tốt.
Hành vi chính thức (có tài liệu) này khi sử dụng các hội đồng khác nhau hay tôi đang làm điều gì đó sai?
Mã:
Không làm việc:
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
}
làm việc:
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();
}
Cập nhật:
Các ngoại lệ-Text là:
{ "Các tập tin hoặc lắp ráp \ "ViewModelsRoot, PublicKeyToken = null \" hoặc một trong các phụ thuộc của nó không được tìm thấy. Hệ thống không thể tìm thấy các tập tin định "}
Và ngoại lệ bên trong duy nhất tôi có thể thấy là một System.IO.FileNotFoundException
Cập nhật 2:..
Cám ơn ý kiến, nhưng tôi thiên đường Tôi đã rút ngắn nó ở đây để hiển thị mã, nhưng tôi tăng gấp đôi và triplechecked (một lần nữa) .Không gian tên DataContexts cũng được điền vào bởi intellisense.Phạm vi toàn bộ <viewModels:ShellViewModel />
được viết bởi intelli-sense. Vì vậy, nó được tìm thấy tại designtime ... ... để có thêm ý tưởng nào?
Cập nhật 3: Xaml được phân tích cú pháp "đúng" khi tôi có thể liên kết DataContext với một lớp trong cùng một assembly.
Có ngoại lệ nào bên trong không? – Guillaume
@Guillaume vui lòng xem câu hỏi đã cập nhật của tôi :) – basti
Bạn có thể đã quên một số không gian tên trong 'UserControl' của mình. Kiểm tra xem điều này có hữu ích không: http://stackoverflow.com/questions/8852912/xamlparseexception-in-view – Guillaume