自定义控件需要注意一个小问题
由于Silverlight自带的窗口(ChildWindow)觉得不好看,并且不支持浮动、指定显示位置只能通过属性Margin属性等。
因此自己写了一个并继承ContentControl对象,在Show(Panel parent)时必须传入一个Panel对象,为检测父对象的Size变化时,自动做出一些变化(如最大化、最小化时)
调用了父对象的SizeChanged事件
void Show(Panel parent)
{
....
parent.SizeChanged+=.....
}
所有工作都完成了,什么都有没有问题,但发现Close()后,内存不会减下来,找了很久终于发现是parent.SizeChanged事件异致的,把这个事件去掉内存就被回收。[由于GC回收内存时,只能对象不再被引用才会被回收]。
因此在开发控件时最后不要调用父对象的事件(我不敢保证都会这样),否则可能导致对象不会被回收造成内存只增不减。