2009-07-30 3 views
0

사용자 정의 컨트롤을 표시하는 단일 템플릿 열이 포함 된 Silverlight DataGrid가 있습니다. 사용자 정의 컨트롤에는 처리를 나타내는 진행 막대가 있으며 처리가 완료되면 애니메이션이 진행 막대를 숨기고 완성 된 레이블을 표시합니다.Silverlight DataGrid 다시 그리기 문제

먼저, 는 사용자가 다음 데이터 그리드 스크롤의 많은 애니메이션을 다시 그리는 것으로 시작됩니다 않을 때 UserControl을이보기에 올 때 :

는 데이터 그리드 자체를 다시 그리기하지 않는 것 같습니다되는 두 개의 인스턴스가 있습니다 마침내 아무 것도 다시 그리지 않는 지점에 도달하게됩니다.

두 번째, usercontrol에 팝업 이벤트를 표시하는 click 이벤트가 있습니다. 팝업이 닫히면 다시 사용자 정의 컨트롤이 제대로 다시 그려지지 않습니다.

이 문제가 발생하는 이유와 그 방법에 대한 아이디어는 있습니까?

답변

1

이전 답변이 맞습니다. 어떤 컨트롤이 제대로 작동하려면 Load_Row 및 Unloading_Row 이벤트를 제대로 처리해야하는 경우가 종종 있습니다. 내 경우에는 컨트롤 속성이 실제로 작동하도록 객체에 바인딩되어 있어야합니다. 애니메이션과 가시성 등을 사용하려고하면 이상한 동작을 보게됩니다. 그러나 진행 바를 장면 뒤에있는 각 항목의 진행 상태를 유지하는 객체에 바인딩하면 행이 표시 될 때마다 다시 바인딩되고 다시 그립니다.

+0

사용자가 그리드 내부를 클릭했을 때 이상한 행동을 보았습니까? 클릭하면 애니메이션을 다시 그리도록 강제 할 수있는 "다시 칠하기"도 호출됩니다. – t3rse

0

DataGrid에는 모눈의 모든 행에 대해 컨트롤 인스턴스가 하나만 있다는 것을 알아야합니다. 데이터 소스에는 수백만 개의 행이있을 수 있지만 그리드에는 화면에 표시되는 것보다 컨트롤의 인스턴스가 더 필요하지 않습니다. 예를 들어, 스크롤 할 때 이전에는 보이지 않는 컨트롤의 인스턴스가 표시되지 않습니다. 현재 스크롤 위치에 대해 올바른 표시를하기 위해 필요한 값이 무엇이든 현재 표시되는 컨트롤을 지정합니다.

해결 방법이 있는지 모르겠습니다.