2012-06-18 28 views
7

Tôi có một ứng dụng wpf bằng Caliburn.Micro. Tôi có một MyView xem:Không thể tìm thấy chế độ xem cho ViewModel

<UserControl x:Class="ReferenceMaintenanceWorkspace.MyView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     > 
    <UserControl.Resources> 
</UserControl.Resources> 
<TabControl x:Name="Items" > 
</TabControl> 

Tôi cũng có MyViewModel:

using System.ComponentModel.Composition; 

namespace ReferenceMaintenanceWorkspace 
{ 
[Export(typeof(MyViewModel))] 
public class MyViewModel 
{ 
    public MyViewModel() 
    { 
     base.DisplayName = "Reference Maintenance"; 
    } 

Bởi vì một số lý do, tôi nhận được thông báo sau trên điều khiển tab:

có thể không tìm thấy xem cho ReferenceMaintenanceWorkspace.MyViewModel.

Bạn có thể giải thích tại sao điều này có thể xảy ra không? Cảm ơn.

Trả lời

12

Caliburn Micro đang mong đợi cấu trúc tệp nhất định trong dự án của bạn. Chế độ xem và chế độ xem của bạn phải nằm trong các thư mục riêng biệt có tên Chế độ xem và Chế độ xem.

Here là ví dụ Hello World thú vị mô tả điều này.

+1

Ứng dụng tôi đang bảo trì đã có các chế độ xem và chế độ xem khác nhau. Không ai trong số họ tồn tại trong các thư mục với tên Views và ViewModels, và họ đã làm việc. Tất cả chúng đều tồn tại trong các dự án thư viện lớp khác nhau và tôi đang thêm một dự án mới có tên là ReferenceMaintenanceWorkspace. Tôi tự hỏi nếu các dự án nên có một số thiết lập cụ thể mà tôi không biết ... –

+1

Có thể nó đang được thực hiện bằng tay Caliburn.Micro.View.SetModel (NameView, NameViewModel); – ShadeOfGrey

+0

hoặc trong chế độ xem ShadeOfGrey

4

Bạn nên ghi đè SelectAssemblies trong bootstrapper và cung cấp tên assembly mà tầm nhìn của bạn nằm trong

5

Chỉ cần cho tương lai, nó cũng sẽ xảy ra sau khi đổi tên lớp/gói, nhưng theo quan điểm của tập tin XAML "x: Class". Không phải là đã cập nhật.

Các vấn đề liên quan