2015-05-21 2 views
0

У меня есть пользовательский элемент управления BIG и OLD xaml, и я пытаюсь добавить для него класс ViewModel (чтобы все было правильно). код для присоединять ViewModel в XAML является:ViewModel не существует в пространстве имен «clr-namespace: ...»

xmlns:vm="clr-namespace:Company.Proj.ViewModel;assembly=Company.Proj" 
      xmlns:v="clr-namespace:Company.Proj.View;assembly=Company.Proj" 
      mc:Ignorable="d"> 
    <UserControl.Resources> 
     <DataTemplate 
      DataType="{x:Type vm:SampleVM}"> 
      <v:MainWindow/> 
     </DataTemplate> 
    </UserControl.Resources> 
    <UserControl.DataContext> 
     <vm:SampleVM/> 
    </UserControl.DataContext> 

и класс для будущих ViewModel:

namespace Company.Proj.ViewModel //the namespace is correct 
{ 
    public class SampleVM // the class is public 
    { 
     public SampleVM() // void constructor? perhaps not needed here 
     { 

     } 
    } 
} 

и я получаю SampleVM does not exist in the namespace clr-namespace:Company.Proj.ViewModel;assembly=Company.Proj"

Я гугле много и узнал много ответов , как в The name ViewModel does not exist in the namespace "clr-namespace:Project.ViewModels"

... Я пытался rebuildProjec/осторожно)) CopyPaste сборочные и namespece имена/reopenStudio/изменение отлаживать-релиз-отладочные ...

Но ничего не решается (( Есть ли другой вариант для подключения к ViewModel View.xaml (возможно, лучше тот, который я использовал), или что Коула быть сделано, чтобы решить эту проблему

My VS версия: VS Community 2013 12.0.3.1101.00 Update 4 Target Структура 4.5.1

EDIT: Мой вопрос отличается от приведенных выше ссылки, потому что в моем вопросе нет никакой ошибки в CLR-пути (см верхнего ответа Волей)

+0

Правильно ли сборка? Если 'UserControl' находится в той же сборке, что и модель viewmodel, это даже не требуется. –

+0

Да .. Купите способ сборки здесь не нужен (один проект). Я также попробовал xmlns: vm = "clr-namespace: Company.Proj.ViewModel без сборки. Такая же ошибка ( – curiousity

+0

Проблема не находит класс SampleVM , но код не может каким-то образом найти пространство имен (или сборку). – Marshal

ответ

0

Для отладки это просто, вы можете попробовать следующие шаги:

  1. Возьмите новый проект.
  2. Добавьте сборку Company.Proj.dll как ссылку на него.
  3. Попробуйте сопоставить пространство имен viewmodel (или любое другое пространство имен) с директивой xmlns: prefix.

PS: Как вы задали в вопросе, конструктор void не является проблемой. Для инициализации нужен конструктор. Классы без конструктора не могут быть инициализированы (за исключением использования фабричных методов).

Edit: Вы можете хотели бы видеть ответы на более similar question.

+0

У меня есть ссылка и xmlns: vm = "clr-namespace: Company.Proj.ViewModel; assembly = Company.Proj" - помечен как прекрасный код (НЕТ ошибок). Но я не видел никого в обычном dropdovn, когда я набираю curiousity

+0

Возможно, версии .NET Framework не совпадают. Проверьте, имеют ли ваши новые proj и Company.Proj те же версии каркаса .net. – Marshal

+0

Да)) ваше право - когда я скорректировал версию каркаса, я МОЖЕТ создать экземпляр экземпляра ViewModel в файле .cs (! И он компилируется отлично!), Но НЕ МОЖЕТЕ не делать этого в xaml - все равно никаких предложений в раскрывающемся списке нет. -error vm: SampleVM не найден. Убедитесь, что у вас нет ссылки на сборку и что все ссылочные сборки были созданы. – curiousity

Смежные вопросы