Новое имя библиотеки пользовательского контроля WPF не существует в пространстве имен
Я новичок в WPF, и я пытаюсь разрешить ошибку. Я пытаюсь создать пользовательскую библиотеку управления, где я могу создавать свои собственные объекты управления. Когда я перейду в File > New Project > WPF Custom Control Library > [Enter name] > Save, то мгновенная ошибка:
The name "CustomControl1" does not exist in the namespace "clr-namespace:ProjectName"
Я не редактировал никакого кода, но сразу же ошибся. Для справки, ошибка находится внутри Generic.xaml.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ProjectName">
<Style TargetType="{x:Type local:CustomControl1}"> //<--Fails here
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}"> // Fails here as well
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Я использую Visual Studio 12 и .NET 4. Любые идеи?
Ответы
Ответ 1
Это ошибка IntelliSense, а не ошибка сборки, поэтому она не должна влиять на создание проекта. Чтобы устранить эту ошибку,
- создать проект или
- отредактируйте документ (например, удалив
>
из тега, а затем добавив его обратно).
Когда вы открываете документ, дизайнер XAML загружается в фоновом режиме для предоставления информации IntelliSense. Он загружает информацию для незастроенных типов (т.е. Типов, определенных в текущем решении, но которые еще не были встроены в сборку) асинхронно, и часто этот процесс завершается после того, как конструктор завершил первоначальный анализ документа.
Построение проекта приведет к созданию нестрогих типов (таким образом, устранению проблемы), и внесение существенного изменения в документ заставит конструктора повторно обработать документ с помощью новой информации о типе (в идеале документ должен быть репарации, когда информация о незастроенной типе становится доступной).
Ответ 2
По словам Джеймса Макнеллиса, в моем случае мне пришлось прокомментировать раздел XAML, вызвавший ошибку (поскольку ошибка не позволила перестроить), затем ЗАКРЫТЬ сам файл, поэтому его не открыть в VS, то я мог бы сделать успешную сборку. Затем я раскоментировал раздел XAML, и VS смог найти локальные классы...
В случае, если кто-то наткнется на это.
Visual Studio 2012 Express для Windows Desktop...
BR,
Daniel
Ответ 3
Предполагая, что ваша сборка называется ProjectName, а ваше целевое пространство имен также называется ProjectName
Вы должны изменить следующее:
xmlns:local="clr-namespace:ProjectName">
от до
xmlns:local="clr-namespace:ProjectName;assembly=ProjectName">
Ответ 4
Это также может произойти, если вы не пишете стиль по умолчанию для CustomControl в generic.xaml
. Он генерирует что-то вроде этого в generic.xaml:
<Style TargetType="{x:Type local:MyCustomControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyCustomControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
вы можете найти этот фрагмент кода и изменить его или удалить.
Ответ 5
Убедитесь, что в CustomControl1 нет ошибок и проверьте ваше пространство имен.
Ответ 6
Восстановление и очистка несколько раз фиксировали проблему для меня.