我有一个Silverlight控件,它维护一组子对象。这组儿童的动画中相当迅速更新,看起来像这样的方法被称为每次在控制变化的动画依赖属性:如何确保清除UIElementCollection立即清除我的控件的子项?
void SomeMethod(IEnumerable<ChildControlType> childControls)
{
this.Children.Clear();
foreach(var child in childControls)
{
this.Children.Add(child);
}
}
我所看到的是孩子的可变数量上的每个框架,尽管它总是汇聚到所需的控制。也就是说,如果对于每一帧,我想要3个控件并发送带有3个子控件的IEnumerable,则在大多数帧上,在此方法结束时,子集中会有3个子元素。但是,有些情况下,在该方法的最后,在Children集合中有12个控件。这导致12个控件显示在控件上,看起来很丑陋。
任何人都可以解释为什么这会是?
是的。我已经试过这个机会。它不起作用。实际上对方法的调用总是来自DependencyProperty的改变的回调。据我了解,这个回调总是在UI线程上调用它不是吗? –
我怀疑是这样,但值得一试。在那种情况下,我会假设孩子的加入不是同步的。也许你可以隐藏/显示而不是添加/删除? –