Thank you for your response. After further analysis, I have discovered that the problem can be duplicated with far less complexity than what was described in my previous post.
Attached you will find a zip file containing a simple application that contains a UserControl (View) containing a single RadMaskedTextInput, another UserControl containing a single native TextBox, and a MainPage with a ContentControl to host either UserControl. The MainPage Contains 4 buttons that allow you to add and remove each respective UserControl to and from the ContentControl as well as calling GC.Collect() where appropriate. For good measure, I also provided a simple binding to a ViewModel containing a single string property.
What is expected:
I would expect the destructor to be invoked each time either UserControl is removed from the ContentControl and GC.Collect() is executed.
What is exhibited:
The destructor is only invoked when the UserControl containing the native TextBox is removed from the ContentControl. When the UserControl containing the MaskedTextInput is removed, the desctructor is not invoked.
Keep in mind, I have tested this with assembly versions 2012.2.607.1050 and 2012.2.912.1050. I have also profiled the application (and thereby the behavior) using the ANTS Profiler tool. The Class List found within the ANTS Report clearly identifies multiple instances of the UserControl containing the MaskedTextInput.
Am I using the controls incorrectly?
Any help on this matter would be much appreciated.
NOTE: I was unable to upload the solution within this forum. Therefore, I created a support ticket (
) and attached the solution accordingly.