A good read about memory leaks in WPF and Silverlight. Most of the UI memory leaks are evolved around events registration with no unregistrating them which causes the GC not to collect objects.
Here are the main causes:
- Event handlers to objects in parent windows
- Registering to events from static objects
- Using timers
- Data binding
- Changing the Text property of a text box (unlimited undo operations)