我有一组UserControl,它们共享相同的业务对象(ViewModel),但仅限于此 以不同的方式显示数据。
我通过组合框选择一个活动的UserControl。旧的UserControl我从StackPanel删除并添加新的UserControl。
var uiElement = thisObject.EditorsContainer.Children.FirstOrDefault();
if (uiElement != null)
{
thisObject.EditorsContainer.Children.Remove(uiElement);
uiElement.Cast<UserControl>().ClearValue(DataContextProperty);
}
EditorsContainer是StackPanel
看起来父控件保留对已删除控件的引用,因为当我在活动控件中编辑值时,绑定到binded属性会更新内存中已删除的控件。
答案 0 :(得分:0)
作为解决方法,我已经实现了具有IsActive属性的IActiveAware接口,当用户控件的逻辑生命周期结束时,该属性为false。在ViewModel的绑定属性上,我检查了这个属性。