2012-08-10 3 views
6

우리는 BitmapCache를 사용하는 사용자 정의 컨트롤이있는 WPF 페이지가 있습니다. 빈 요소 (데이터 바인딩)를 빈 경로 (새 경로())로 업데이트하여이 요소를 지우려고 할 때, 완전히 새로 고침/지워지지는 않습니다. 창 크기를 조금 변경하면 BitmapCache가 활성화 된 영역이 완전히 지워집니다.WPF의 BitmapCache가 완전히 지워지지 않았습니다.

BitmapCache를 사용하는 요소를 지우거나 새로 고치는 데 특별한 방법이 있습니까? 경로를 설정하는

<me:ScrollViewer 
    RenderedWaves="{Binding RenderedWaves}" 
    ItemTemplate="{DynamicResource DataTemplateForWaveItem}" 
    ItemsPanel="{DynamicResource ItemsPanelTemplateForWaveItems}" 
    CacheMode="BitmapCache" /> 

내가 그것을 고정 생각하지만, 모든 시간을 작동하지 ...

이 코드는 '아무튼 :

는 우리의 코드 BitmapCache를 즉시 업데이트하십시오.

Protected WriteOnly Property SetGraph As Path 
Set(value As Path) 
    If value Is Nothing Then value = GetEmptyPath() 
    _graph = value 
    OnPropertyChanged(New PropertyChangedEventArgs(PropertyNameGraph)) 
End Set 
End Property 
,210

그리고이 코드는 때때로을 업데이트합니다

Protected WriteOnly Property SetGraph As Path 
Set(value As Path) 
    UIDispatcherLocator.UIDispatcher.Invoke(Sub() 
               If value Is Nothing Then value = GetEmptyPath() 
               _graph = value 
              End Sub, Threading.DispatcherPriority.Background) 
    OnPropertyChanged(New PropertyChangedEventArgs(PropertyNameGraph)) 
End Set 
End Property 
+0

좀 더 알려 줄 수 있나요? 왜 그렇게 복잡한가요? –

+0

내가 베팅을하는 사람이라면 vidya 카드 문제가 있다고 말할 수 있습니다. 당신은 최소한의 예를 제공 할 수 있습니까? – Will

+0

코드 숨김에서 InvalidateVisual()을 호출하여 도움이되는지 확인할 수 있습니다. – ekholm

답변

0

는 그냥 사용 if 문에 의해 일시적으로 생성 된 새로운 오브젝트 = 필요할 때 화재 객체에 새로운 이벤트를 만들어 객체를 설정합니다 전화했을 때 수도 당신은 system.idisposable에서 상속 받도록 할 수 있으며, 끝나면 null로 설정할 수 있습니까? 내 머리 꼭대기에서 코드를 모르지만 다음과 같은 코드는 모르겠다.

MyEvent += new event(object b); 

event(object b) 
{ 
    using (custom_ScrollViewer = new custom_ScrollViewer) 
{ 
OnScreen_ScrollViewer = Custom_ScrollViewer; 

}; 
// or 
custom_ScrollViewer = new custom_ScrollViewer; 
OnScreen_ScrollViewer = Custom_ScrollViewer; 
custom_ScrollViewer = null; 

} 
관련 문제