MVVM - 名称空间中不存在该名称

时间:2018-02-25 20:40:27

标签: c# wpf mvvm

我正在尝试启动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"/>

表示:

  

名称&#34; MainViewModel&#34;在命名空间中不存在   &#34; CLR-名称空间:StereoVisionApp&#34 ;. StereoVisionApp C:\ Users \ Me \ source \ repos \ StereoVisionApp \ StereoVisionApp \ App.xaml

我已经尝试了restarting万次。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

在Visual Studio中,在项目中创建新文件夹时,默认情况下会创建名为projectname.foldername的新命名空间。 (在您的情况下:StereoVisionApp.ViewModels)。其中的所有文件都自动获取该命名空间。

你可以:

  1. 更改MainViewModel.cs中的命名空间 或
  2. 将新命名空间添加到App.xaml,如下所示:
  3. Application

    App.xaml标题中添加此内容
    xmlns:vm="clr-namespace:StereoVisionApp.ViewModels"
    

    然后像这样使用它:

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

    另请注意,x:Key值是您选择的字符串(不一定是确切的位置,因此您实际上可以写:

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

    x:Key值仅供将来参考。