2012-06-18 3 views
7

Ho un'applicazione wpf che utilizza Caliburn.Micro. Ho una visione MyView:Impossibile trovare la vista per 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> 

ho anche MyViewModel:

using System.ComponentModel.Composition; 

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

A causa di qualche ragione, ricevo il seguente messaggio sul controllo a schede:

Non riesci a trovare visualizzare per ReferenceMaintenanceWorkspace.MyViewModel.

Potresti spiegare perché questo potrebbe accadere? Grazie.

risposta

12

Caliburn Micro prevede una determinata struttura di file all'interno del progetto. Le viste e i modelli di visualizzazione dovrebbero essere in cartelle separate denominate Views e ViewModels.

Here è un bel esempio di Hello World che descrive questo.

+1

L'applicazione che sto mantenendo aveva già vari view e modelmodels. Nessuno di loro esisteva in cartelle con nomi Views e ViewModels, eppure funzionavano. Sono tutti esistiti in diversi progetti di librerie di classi, e ne sto aggiungendo uno nuovo chiamato ReferenceMaintenanceWorkspace. Mi chiedo se i progetti dovrebbero avere alcune impostazioni particolari di cui non sono a conoscenza ... –

+1

Forse si sta eseguendo manualmente Caliburn.Micro.View.SetModel (NameView, NameViewModel); – ShadeOfGrey

+0

o nella vista ShadeOfGrey

4

Si dovrebbe ignorare SelectAssemblies nel programma di avvio automatico e fornire nome dell'assembly dove la vostra vista si trova in

5

Solo per il futuro, succede anche dopo la ridenominazione classi/pacchetti, ma nel file XAML vista "x: Class". Non è aggiornato.