Cannot find view for ViewModel

Topics: Conventions, Getting Started
Jun 18, 2012 at 2:19 PM

Dear experts,

 

I have a wpf application using Caliburn.Micro. I have a view MyView:

<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>

 

I have also MyViewModel:

using System.ComponentModel.Composition;

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

Because of some reason, I get the following message on the tab control:

Cannot find view for ReferenceMaintenanceWorkspace.MyViewModel.

Could you please explain why this could happen? Thanks.

Jun 18, 2012 at 5:51 PM
Edited Jun 18, 2012 at 5:52 PM

I see its a usercontrol how are you loading this ?  Via your ShellView/MainView and using a ContentControl? Also you might need to change how your viewmodels/views are found with the bootstrapper in the config....

for the viewlocator configuration reference this 

http://caliburnmicro.codeplex.com/wikipage?title=Using%20the%20NameTransformer&referringTitle=Documentation

Jun 18, 2012 at 6:37 PM

The user control is a tab item of ShellView's tab control named "Items". It is loaded like this:

      private void Activate(string item)
      {
         var vw = (ShellView)GetView();
         vw.ReleaseInfo.Visibility= Visibility.Collapsed;

         var wspace = (from w in Workspaces.Cast<Screen>()     
                        where w.DisplayName == item
                        select w ).FirstOrDefault();

         ActivateItem( wspace );

      }

The application I am maintaining already had various views and viewmodels. They work. They all existed in different class library projects though, and I am adding a new one called ReferenceMaintenanceWorkspace. I tried to copy everything I had in other projects, as I want the new one to work the same way, but I still must be missing something.

Jun 18, 2012 at 11:15 PM

is this in a separate library project dll?

Jun 19, 2012 at 10:36 AM

Yes, but the project is part of the same solution.