tech·nic·al·ly agile

Bug in ObservableCollection?

Struggling with ObservableCollection and generics in WPF? Discover the limitations and a workaround to enhance your coding experience. Dive in now!

Published on
2 minute read
Image
https://nkdagility.com/resources/L9aNTno7QM3

I seam to be having a little problem. Now, this may be me being stupid, but I can’t get an ObservableCollection to work if you pass it a generic type!

For example, consider the following code:

 1Public Class ItemBitCollection(Of TItem)
 2    Inherits ObservableCollection(Of ItemBit(Of TItem))
 3
 4
 5End Class
 6
 7Public Class ItemBit(Of TItem)
 8
 9    Private m_item As TItem
10
11End Class

Now, if you create an instance of ItemBitCollection you will see an error on the IDE regardless of wither you use a custom object type or a String type to initialise it:

Bug in ObservableCollection?  

Why does this not work? What is ObservableCollection doing that maybe it should not? Time to get Reflector out…

After some looking at the source I am still none the wiser. Even if you dumb down your classes to the bare minimum you cant pass a generic type into an ObservableCollection.

This is a limitation if you ask me…

Annoying solution:

If you create a fixed class type:

 1Public Class ItemBitCollection(Of TItemBit)
 2    Inherits ObservableCollection(Of TItemBit)
 3
 4End Class
 5
 6Public MustInherit Class ItemBit(Of TItem)
 7
 8    Private m_item As TItem
 9
10End Class
11
12Public Class DefaultItemBit
13    Inherits ItemBit(Of String)
14
15End Class

And then pass that class in it does work:

1Dim o As New ItemBitCollection(Of DefaultItemBit)

 

Although this is a work around, it causes other problems in my code… Ahh well… worth a try…

Technorati Tags: .NET    WPF 

Comments

Related blog posts

No related videos found.

Connect with Martin Hinshelwood

If you've made it this far, it's worth connecting with our principal consultant and coach, Martin Hinshelwood, for a 30-minute 'ask me anything' call.

Our Happy Clients​

We partner with businesses across diverse industries, including finance, insurance, healthcare, pharmaceuticals, technology, engineering, transportation, hospitality, entertainment, legal, government, and military sectors.​

CR2

Emerson Process Management Logo
Schlumberger Logo
Ericson Logo
YearUp.org Logo
Sage Logo
DFDS Logo
Genus Breeding Ltd Logo
Freadom Logo
Jack Links Logo
Lockheed Martin Logo
Brandes Investment Partners L.P. Logo
MacDonald Humfrey (Automation) Ltd. Logo
Boeing Logo
Slaughter and May Logo
Philips Logo
Slicedbread Logo
Cognizant Microsoft Business Group (MBG) Logo
Department of Work and Pensions (UK) Logo
Royal Air Force Logo
Washington Department of Transport Logo
Nottingham County Council Logo
Washington Department of Enterprise Services Logo
Ghana Police Service Logo
DFDS Logo
Genus Breeding Ltd Logo
Lean SA Logo
ProgramUtvikling Logo
Xceptor - Process and Data Automation Logo
SuperControl Logo