Имя <...> не существует в пространстве имен <...> - PullRequest
0 голосов
/ 30 октября 2018

Я застрял в этой маленькой проблеме, которая, похоже, не имеет решения вообще. Я пытаюсь установить DataContext в Window в проекте WPF, который выглядит следующим образом:

enter image description here

Файл XAML:

<Window x:Class="CSB.Tasks.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:CSB.Tasks"
    xmlns:vm="clr-namespace:CSB.Tasks.ViewModels.WPF" <!-- This is what i need -->
    mc:Ignorable="d"
    Title="MainWindow" 
    Height="350" 
    Width="525">

<WindowChrome.WindowChrome>
    <WindowChrome ResizeBorderThickness="{Binding ResizeBorderThickness}"
                  GlassFrameThickness="0"
                  CornerRadius="{Binding CornerRadius}"/>
</WindowChrome.WindowChrome>

<StackPanel Margin="5">

</StackPanel>

Я хочу установить WindowViewModel в качестве ViewModel Window, но VS, похоже, не находит папки, в которых содержится класс. Итак, когда я пытаюсь добавить Window.DataContext вроде:

<Window.DataContext>
    <vm:WindowViewModel/>
</Window.DataContext>

VS, очевидно, говорит мне, что класс не существует.

Я искал похожие вопросы по SO и нашел их много, но на самом деле никто не помог мне. Я уже пытался перезапустить VS, очистить и пересобрать проект, скомпилировать на определенной целевой платформе (теперь он установлен на Any CPU), переместить ViewModel в корневую папку и затем переместить его обратно, абсолютно без изменений.

Кто-нибудь знает, что может быть причиной?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 01 ноября 2018

Мне действительно удалось добавить DataContext в XAML MainWindow. Пространство имен ViewModel было установлено на CSB.Tasks для доступа к нему глобально, но даже используя локальные xmlns, я не мог ссылаться на него. Мне пришлось изменить пространство имен ViewModel в соответствии с его фактическим путем в папке проекта, поэтому:

namespace CSB.Tasks.ViewModels.WPF
{
   public class WindowViewModel : BaseViewModel
   {
       ...
   }
}

Чтобы установить xmlns:vm и использовать его в объявлении DataContext. Затем я переключил пространство имен ViewModel обратно на CSB.Tasks и перекомпилировал проект, и по какой-то причине в редакторе XAML я смог получить доступ к WindowViewModel из xmlns:local.

Мне не очень ясно, если это ошибка или нет.

Спасибо всем за помощь!

...