당신이 가상화를 사용하는 경우에만 볼 수있는 항목을 업데이트해야합니다 - 현재 유일하게 볼 수있는 항목에 대한 속성 변경 사항을 추적합니다 일반적으로 항목 컨트롤을. 그러나 기본 ItemsControl
을 사용하는 경우 가상화가 기본적으로 해제됩니다. 전원을 켜려면, 당신은 CanContentScroll
와 ScrollViewer
이 True
로 설정 포함하는 사용자 정의 템플릿을 제공해야하고, 당신은 또한 중 하나 컨트롤 템플릿에서, 또는 ItemsPanel
를 통해하는 VirtualizingStackPanel
를 사용해야합니다 - 이것은 이전의 접근 방식을 보여줍니다
<ItemsControl ItemsSource="...whatever...">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ScrollViewer CanContentScroll="True">
<VirtualizingStackPanel IsItemsHost="True" />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
가상화는 여러 가지 방법으로 많은 수의 목록 항목에서 성능을 향상시킵니다. 그것은 당신의 시나리오에 도움이되지만, 성능의 다른면을 향상시킬 수도 있습니다. 문제가없는 것은 아니지만 다른 솔루션을 시도하기 전에 여기에서 먼저 시도해 보겠습니다.
는 "backgroundColor로"속성 이름 또는 null과 함께하여 PropertyChanged 이벤트를 트리거하고 있습니까? – Guy
일반적으로 ItemTemplate을 사용하여 바인딩하려는 객체의 색상으로 색상을 명시 적으로 지정하지 않고 ItemTemplate을 사용하여 항목의 배경색에 스타일을 적용해야합니다. 또한 ItemsControl 대신 VirtualizingStackPanel (예 : ListBox)에서 파생 된 컨트롤을 사용하면 무료 UI 가상화를 얻을 수 있습니다 (사용자가 볼 수 없으면 모든 UI 객체가 업데이트되지 않습니다) – Guy
속성 이름이 " 배경색" – Matx