2011-11-26 68 views
2

我在WPF画布上绘制了流程图样式的应用程序。 (基本上与线连接的盒子)。这些盒子被连接到'模型'上的各种事件。我需要能够清除画布,而不会破坏模型。 我所做的是从Canvas'Children集合中删除所有的盒子等。这工作正常视觉,但控制似乎生活在记忆中某处的某处。当我稍后在模型上触发事件时,控件会使我的应用程序崩溃。 (现在看不见的盒子'期望'是一个画布的孩子)。 我应该如何指示不再需要的控件?我希望它们被销毁,不会对事件和绑定做出响应。绑定到模型防止WPF处置它们?将他们的Datacontext设置为空帮助?杰夫,干杯。从画布中删除的WPF对象对事件作出响应的响应

回答

2

听起来像你可能需要使用这些框来实现IDisposable并在删除它们时调用Dispose。在dispose方法中,你应该解除你的事件监听器。或者,如果您打算再次使用方框,则可能需要将某些方法公开给RemoveListeners(),然后再将方法公开给AttachListeners(),以便当您希望它回到视图中时。

public void Dispose() 
    { 
     model.MyEvent -= LocalListener; 
    } 
+0

干杯!,这似乎工作。 – Jeff