6

我们有一个带有用户控件的 WPF 页面,我们在其中使用 BitmapCache - 当我们尝试通过使用空路径(新路径())更新属性(数据绑定)来清除此元素时,它并没有完全刷新/清除。如果我稍微更改窗口大小,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

这段代码有时会更新它:

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
4

1 回答 1

0

您是否可以在对象上创建一个新事件以在需要时触发,并且在调用时将 object = 设置为由 use 语句临时创建的新对象,如果您可以使其继承自 system.idisposable 或者您只是将其设置为完成时为空?我不知道它的代码,但类似于:

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;

}
于 2013-07-19T02:19:53.630 回答