Reputation: 4625
I was working on creating some markup extensions and started to get very weird VS behaviours. I have extracted and pinpointed the issue in the separate solution. Problem is that VS can't create a CLR object in XAML.
Here it is:
View:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication4="clr-namespace:WpfApplication4">
<Window.Resources>
<wpfApplication4:Dog x:Key="doggy" />
</Window.Resources>
<Grid />
</Window>
Code behind:
using System.Windows;
namespace WpfApplication4
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
Dog class:
namespace WpfApplication4
{
public class Dog
{
}
}
App.Xaml (no code in App.Xaml.cs):
<Application x:Class="WpfApplication4.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
Exception I am getting:
Error 1 The name "Dog" does not exist in the namespace "clr-namespace:WpfApplication4". \\hopr1\folders$\vxk\Documents\Visual Studio 2012\Projects\WpfApplication4\MainWindow.xaml 6 9 WpfApplication4
I am able to run solution, but designer fails with "Invalid Markup" error Any ideas?
Edit
I am running VS 2012 Update 2 The same solution work in VS 2012 Update 1
Upvotes: 71
Views: 82678
Reputation: 3589
In my case this error was caused by having signed assemblies with 'delay sign only' enabled. The solution was to run the command sn -Vr *
from the developer console (as administrator). This registers the assembly for verification skipping. And then restart Visual Studio.
Upvotes: 0
Reputation: 398
The name “XYZ” does not exist in the namespace “clr-namespace:ABC”
SOLVED!!
check whether the function you want to invoke / the class is present in the namespace
Correct Example :
.XAML file
<Window x:Class="objectbinding.MainWindow"
<!--your xmlns:x .......
namespace1 is the project name-->
xmlns:m="clr-namespace:namespace1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<ObjectDataProvider ObjectType="{x:Type m:StringData}"
x:Key="anyname" MethodName="GetStrings"/>
</StackPanel.Resources>
ItemsSource="{Binding Source={StaticResource Runni}}" />
</StackPanel>
</Grid>
//StringData is the class name in xaml.cs and GetString is the Function
.XAML.CS file
namespace namespace1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
// the class StringData is defined in namespace namespace 1
public class StringData
{
ObservableCollection<String> lst = new ObservableCollection<String>();
public StringData()
{
lst.Add("Abhishek");
lst.Add("Abhijit");
lst.Add("Kunal");
lst.Add("Sheo");
}
public ObservableCollection<String> GetStrings()
{
return lst;
}
}
}
Wrong example:
.XAML File
<Window x:Class="objectbinding.MainWindow"
<!--your xmlns:x .......
namespace1 is the project name-->
xmlns:m="clr-namespace:namespace1"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<ObjectDataProvider ObjectType="{x:Type m:StringData}"
x:Key="anyname" MethodName="GetStrings"/>
</StackPanel.Resources>
ItemsSource="{Binding Source={StaticResource Runni}}" />
</StackPanel>
</Grid>
.XAML.CS
namespace namespace1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
//The StringData is defined in the class mainWindow not in namespace namespace1
public class StringData
{
ObservableCollection<String> lst = new ObservableCollection<String>();
public StringData()
{
lst.Add("Abhishek");
lst.Add("Abhijit");
lst.Add("Kunal");
lst.Add("Sheo");
}
public ObservableCollection<String> GetStrings()
{
return lst;
}
}
}
}
Upvotes: 0
Reputation: 25601
I had 3 errors in the project and was focused on this error concerning the ObjectDataProvider. I found out that this error cannot be resolved if the project can't build due to other errors. I had a couple other event handlers whose code had been deleted. I needed to also delete the code that tried to link the handlers to the controls. Then the project was able to build and see that the class I was trying to reference from ObjectDataProvider was available.
Upvotes: 0
Reputation: 5445
For anyone coming across this now, BEFORE YOU DO ANYTHING ELSE... if you're certain your classes/namespaces are correct and rebuilding has not solved your problem:
Try restarting Visual Studio
That's it!
This appears to be a bug with Visual Studio 2012 (also appears to affect all other versions that support XAML development)
Update: If restarting Visual Studio doesn't work, reboot the entire PC.
Update: As mentioned in comments by @Dunk, if restarting Visual Studio doesn't work, try deleting the .suo file
Upvotes: 121
Reputation: 1701
I got the same error in Visual Studio 2015 and managed to get the designer working by unchecking the "Disable Project Code Button".
Upvotes: 2
Reputation: 6476
Declaring it in a Resource Dictionary worked for me.
<Window.Resources>
<c:IsNullConverter x:Key="IsNullConverter" />
</Window.Resources>
The problem appears to be that the parser shits itself when it sees a markup extension like Converter={c:IsNullConverter}}"
, but is fine with: Converter={StaticResource IsNullConverter}
.
I think maybe that's where the problem is.
Windows 10, VS 2013
Upvotes: 0
Reputation: 461
I also have a project on a network share and this error unexpectedly showed up. I tried all the suggestions above including copying the project to a local disk, cleaning, rebuilding and opening and closing VS. None of these solved the problem.
What worked for me was simply deleting the namespace reference to the viewmodels folder (xlmns:vm="clr-namespace:Myproj.ViewModel").
I added the type to my xaml (DataTemplate DataType="{x:Type vm:myviewmodel}"). Visual studio then detected the namespace was missing and I clicked on the prompt to add the namespace.
Upvotes: 1
Reputation: 19976
After restarting Visual Studio I got an IntelliSense error that pointed me in the right direction.
Because 'Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionTypeNode' is implemented in the same assembly, you must set the x:Name attribute rather than the Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.Metadata.ReflectionPropertyNode attribute.
So I changed this:
<local:MyView Name="test"/>
To this:
<local:MyView x:Name="test"/>
And then it worked. So, that gives us what? 42 possible causes? Unreal...
Upvotes: 0
Reputation: 312
Before trying an extensive solution, try the following:
I had the exact same problem, I closed the Window/Form that was causing the error and then ran the project,
The error seemed to clear once the project had ran successfully and hasn't come back up.
Hopefully this helps anyone looking for a quick solution.
Upvotes: 4
Reputation: 7186
What worked for me is to change the MOVE
to XCOPY
in Post Build
in the project properties
and then re-build
the project. The designer might want the dll in the project output folder. I'm using vs 2015
Upvotes: 0
Reputation: 3600
This may be due to the Release configuration. Designer needs to be used from Debug configuration.
Upvotes: -2
Reputation: 34609
Had the same issue. What fixed it for me was when I realized the class in question was marked as internal
:
internal class MyClass
{
}
After changing it to public
, the designer was able to compile the XAML properly.
Upvotes: 0
Reputation: 1151
Upvotes: 10
Reputation: 11807
For anyone else stuck.
What worked for me was changing the namespace alias from local, to anything else.
xmlns:local="clr-namespace:ExampleNameSpace.Folder" />
<Grid>
<StackPanel>
<local:ReferencedUserControl />
</StackPanel>
</Grid>
to
xmlns:blah="clr-namespace:ExampleNameSpace.Folder" />
<Grid>
<StackPanel>
<blah:ReferencedUserControl />
</StackPanel>
</Grid>
Hope this helps!
Upvotes: 0
Reputation: 111
It still happens in VS 2015. I took out the SomeConverter in the App.xaml:
<Application.Resources>
<!--Value Converters-->
<local:SomeConverter x:Key="mySomeConverter"/>
Strg-Shift-B
Put it back in - and it worked.
Upvotes: 6
Reputation: 2143
I was starting a new project and having this issue. None of the solutions listed here worked for me, including removing the suo file, unloading/reloading the project, restarting VS, etc.
What worked for me was, because this was a new project, I had not yet built it. I removed the Window.DataContext element to the clipboard, built the project once (shift-ctrl-b), then re-added the element and it functioned immediately.
Upvotes: 3
Reputation: 5093
I stuck on this error for hours. Assemblies and Namespaces were correct, Classes and references were correct too. Compile and run ok, only the designer had somehow problems with me. The only thing that worked
I'm using 3d party portable.library which I had only in x64 version.
Upvotes: 12
Reputation: 790
I experienced the same issue, but my files are stored locally. My IValueConverter resides in a different assembly than the view using it. Even though VS2013 IntelliSense suggested the following, it wasn't working:
xmlns:conv="clr-namespace:MySharedAssembly.Converters"
After I explicitly added the assembly at the end, it worked:
xmlns:conv="clr-namespace:MySharedAssembly.Converters;assembly=MySharedAssembly"
Upvotes: 32
Reputation: 31
Create a symbolic link to the network share on your local drive.
Go to commandline and type mklink /D C:\LOCALFOLDER \YOURNETWORKPATH
Then open the projects from your local folder and all problems go away. Now all files will still be on your network share.:)
Upvotes: 3
Reputation: 429
This has been annoying me for years 2008, 10, 12, 13.
Whenever this happens (and yes, I am working on a network share - I can't avoid it), I close VS, rename the FOLDER and reopen the project. 9 times out of 10, this works. For a while.
Upvotes: 0
Reputation: 3124
Your solution is running on a network share. .Net (and Visual Studio) applications can run into permission / access issues when running on a network share.
Copy your solution to a local drive (with full trust) and you should be fine.
It is possible to get a network drive working with full trust - you can find answers for this on StackOverflow and other places - but in my experience I keep running into obstacles when I do this, so try to avoid it unless it's absolutely critical to the problem at hand.
E.g. this question gives instructions about how to do this:
Give FullTrust to UNC share for Visual Studio 2012 and .Net 4.0
I've only ever tried this with VS2010 so (as indicated in the link) you might have better joy with 2012.
Upvotes: 49