2012-08-10 21 views
6

BitmapCacheを使用するユーザーコントロールを持つWPFページがあります。空のパス(New Path())でプロパティ(データバインド)を更新してこの要素をクリアしようとすると、完全にリフレッシュ/クリアされません。ウィンドウサイズを少し変更すると、BitmapCacheがアクティブな領域が完全にクリアされます。WPFのBitmapCacheが完全にクリアされていない

BitmapCacheを使用する要素のクリア/リフレッシュに特別なことはありますか?

これが私たちのコードです:

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

私はそれを固定し、それは毎回ではない作品と思った...パスを設定するために、

このコードは、」doesnの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 

そして、このコードは、時にはそれが更新されます

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カードの問題があると言いたいと思います。あなたはreprosの最小限の例を提供できますか? – 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; 

} 
関連する問題