I had exactly the same problem; VS2010. I had a reference to WindowsBase.dll but I still got the error. I have a C# project in the same solution that uses ObservableCollection and it compiles fine. I eventually figured out that it was related to the fact that I had set the targeted .NET framework to V3.5 (MMC project and MMC does not yet support .NET 4.0). I had set the C# project to use ".NET V3.5 Client" but the managed C++ project was simply set to ".NET V3.5". It seems that the ObservableCollection definition could be found in the "client" version of the WindowsBase.dll but not in the regular version.
Stating things in a different way, the .csproj file contained the following line but the .vcproj did not.
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
When "Client" is specified the DLL comes from:
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client
When "Client" is not specified the DLL comes from:
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0
Adding the "TargetFrameworkProfile" tag to the .vcproj forced the compiler to use the client version of WindowsBase.dll and then the compile would succeed. I can't explain why, but I'm glad to put this head scratcher behind me.