2009-08-06 4 views
0

주기적으로 더 많은 데이터를로드하여 UserControls로 페이지에 추가하는 Silverlight 응용 프로그램이 있습니다. 한 세트에 약 25 개의 객체를로드하고 각 객체에 대해 하나의 UserControl을 만듭니다.여러 UserControls 추가시 불규칙한 애니메이션 방지하는 방법?

이것은 결국 상당한 시간이 걸립니다! 25 개의 객체를로드하는 것은 순수하게 UI에서 50-150ms가 소요됩니다. 이로 인해 내 애니메이션이 다소 엉망이되어 매우 바람직하지 않습니다.

UserControls의로드를 빠르게하는 방법이 있습니까? 오히려 초당 X 항목을로드하는 일종의 버퍼링 레이어를 추가하지 않을 것입니다. 또한 얼마만큼의 데이터가 들어 오는지에 따라 zombie/reuse하는 UI 객체의 큰 버퍼를 미리로드하지 않을 것입니다. 그러나 현재로서는 다른 옵션을 생각할 수 없습니다.

UserControls 자체는 매우 간단하며 너무 느리게로드된다는 사실에 매우 놀랐습니다. 기본적으로, 나는 (생성자에서 값 비싼 것도하지 않고) 그들을 만들고, DataContext를 설정하고 그것을 부모 캔버스에 추가한다.

그렇게 느린가요? 내가 여기서 누락 될 수있는 명백한 것이 있습니까? 애니메이션과 타이밍을 어떻게 든 분리 할 수 ​​있습니까? UI는 거의 확실하게 단일 스레드입니다.

답변

0

다양한 프로젝트에서 다양한 솔루션을 시도한 오랜 시간이 지난 후에 제가 말할 수있는 유일한 사실은 실제로 그렇게 느리다는 것입니다. 나는 인간 답게 항상 가능한 한 적은 객체를 만들어내는 것 외에는 다른 해결책을 찾지 못했습니다.

UI 개체 생성 속도가 놀랍도록 느립니다. 그것은 슬픈 사실 인 것 같습니다.

0

귀하의 애니메이션이 UI 개체를 만드는 방법을 모르기 때문에 어떤 것이 누락 된 것일 수 있습니다. 단지 선전하기 위해, 내가 아는 유일한 해결책은 당신이 추구하고 싶지 않다고 말한 것들입니다. 가시성을 축소하여 애니메이션을 시작하기 전에 새 UI 객체를 만들 것입니다. 그런 다음 애니메이션을 UI 요소 가시성을 적절한 시간에 수정하여 시각적으로 표시되도록 할 수 있습니다. UI 개체 (사용자가 언급 한 50-150ms는 개체가 무엇인지 알지 못하는 상태에서 완전히 소리가 나지 않습니다.)를 만들 때 오버 헤드가 있습니다. UI 객체가 생성자 또는 Loaded 이벤트 핸들러에서 불필요한 작업을 수행하지 않도록 할 수 있습니다. 성능 문제에 대한 내 일반적인 생각은 이론화가 아니라 테스트가 필요하다는 것입니다. 그래서 여러 옵션을 시도해보고 원하는 성능을 제공하는지 확인하십시오.