나는 일련의 자식을 유지 관리하는 Silverlight 컨트롤이 있습니다. 어린이 세트는 매우 빠른 속도로 애니메이션 동안 업데이트되며,이처럼 보이는 방법은 컨트롤 변경에 애니메이션 종속성 속성마다 호출됩니다UIElementCollection을 지우면 즉시 내 컨트롤의 자식이 지워지는 것을 보장하려면 어떻게해야합니까?
void SomeMethod(IEnumerable<ChildControlType> childControls)
{
this.Children.Clear();
foreach(var child in childControls)
{
this.Children.Add(child);
}
}
무엇 제가 보는 것은 아이들의 변수 번호는 각에 프레임이지만 항상 필요한 컨트롤로 수렴됩니다. 즉, 모든 프레임에 대해 3 개의 컨트롤이 필요하고 3 개의 자식 컨트롤이있는 IEnumerable을 보내면 대부분의 프레임에서이 메서드가 끝날 때 children 컬렉션에 3 명의 자식이 있습니다. 그러나이 메서드가 끝날 때 Children 컬렉션에는 12 개의 컨트롤이있는 경우가 있습니다. 그 결과 12 개의 컨트롤이 추악하게 보이는 일부 프레임의 컨트롤에 표시됩니다.
누구나 설명 할 수 있습니까?
예. 나는 오프 기회에서 이것을 시도했다. 작동하지 않습니다. 실제로 메서드 호출은 항상 DependencyProperty의 변경된 콜백에서 발생합니다. 내가 이해하기 때문에이 콜백은 UI 스레드에서 항상 호출됩니다. –
나는 그것을 의심했다. 그러나 그것은 시험 할만한 가치가 있었다. 이 경우 저는 아이들을 추가하는 것이 동기가 아니라고 생각합니다. 어쩌면 추가/제거하지 않고 숨기거나 보여줄 수 있습니까? –