WPF: Xaml, create an observable collection<object> in xaml in .NET 4.0

Aran Mulholland picture Aran Mulholland · Apr 23, 2010 · Viewed 13.4k times · Source

the web site says you can in .NET 4.0

I cant seem to do it though, what assesmbly references and xmlns' do i need

the following does not work

xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=mscorlib"

<coll:ObservableCollection x:TypeArguments="x:Object">
    <MenuItem Command="ApplicationCommands.Cut"/>
    <MenuItem Command="ApplicationCommands.Copy"/>
    <MenuItem Command="ApplicationCommands.Paste"/>
</coll:ObservableCollection>

Answer

gehho picture gehho · Apr 23, 2010

ObservableCollection<T> is defined in the System assembly, so your namespace should read:

xmlns:coll="clr-namespace:System.Collections.ObjectModel;assembly=System"

You can find that information in MSDN at the top where it says:

Namespace: System.Collections.ObjectModel
Assembly: System (in System.dll)
XMLNS for XAML: Not mapped to an xmlns.

Note that the assembly has changed between v3.5 and v4.0. In v3.5 it was defined in the WindowsBase assembly. However, this was a drawback since you often would like to use the class without any WPF assemblies referenced. So maybe that is why they changed it.

Furthermore, you should also check this blog post, which says that the new XAML features are not completely available in VS yet!