Я пытаюсь запустить шаблон MVVM, и у меня есть такая структура:

enter image description here

App.xaml :

<Application x:Class="StereoVisionApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:StereoVisionApp"
             StartupUri="MainView.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <local:MainViewModel x:Key="StereoVisionApp.MainViewModel"/>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

MainViewModel.cs :

namespace StereoVisionApp.ViewModels
{
    class MainViewModel 
    {
        public MainViewModel()
        {

        }
    }
}

У меня ошибка в этой строке:

<local:MainViewModel x:Key="StereoVisionApp.MainViewModel"/>

Говорит:

Имя «MainViewModel» не существует в пространстве имен «clr-namespace: StereoVisionApp». StereoVisionApp C: \ Users \ Me \ source \ repos \ StereoVisionApp \ StereoVisionApp \ App.xaml

Я пробовал перезапустить миллион раз. любая помощь?

-1
Sandra K 25 Фев 2018 в 23:40

1 ответ

Лучший ответ

В Visual Studio при создании новой папки в проекте at по умолчанию создает новое пространство имен с именем projectname.foldername. (в вашем случае: StereoVisionApp.ViewModels). Все файлы внутри него автоматически занимают это пространство имен.

Вы также можете:

  1. Измените пространство имен в MainViewModel.cs или же
  2. Добавьте новое пространство имен в App.xaml следующим образом:

Добавить это в заголовок Application в App.xaml

xmlns:vm="clr-namespace:StereoVisionApp.ViewModels"

Затем используйте это так:

<vm:MainViewModel x:Key="StereoVisionApp.MainViewModel"/>

Также обратите внимание, что значение x:Key - это строка по вашему выбору (не обязательно указывать точное местоположение, поэтому вы можете написать:

<vm:MainViewModel x:Key="mainViewModel"/>

Значение x:Key предназначено только для справки в будущем.

2
Shachar Har-Shuv 26 Фев 2018 в 00:08