本文告诉大家,visualBrush 已知 bug ,希望大家使用 VisualBrush 时可以知道

  1. 如果把 VisualBrush 绑定的是在元素加入到视觉树前,那么在元素加入到视觉树之后移除视觉树,VisualBrush 就不会自动刷新

  2. 如果把没有加入视觉树的元素加入到 VisualBrush 绑定,之后把元素加入视觉树,再移除,再加入,这时可能 VisualBrush 不再刷新

  3. 如果在 VisualBrush 获取到元素之后,设置元素的 visibility 为 Collapsed 那么 VisualBrush 不会更新布局,详细请看The VisualBrush only refresh the visual but not the layout when the Visual visibility changes

  4. 如果元素绑定 VisualBrush 然后对元素使用 RenderTargetBitmap 就会让 VisualBrush 无法使用。

解决方法,设置 VisualBrush 的 Visual 为空再设置元素

var visual = visualBrush.Visual;
visualBrush.Visual = null;
visualBrush.Visual = visual;

参见:https://stackoverflow.com/a/3073378/6116637

https://stackoverflow.com/a/13182210/6116637

WPF 如何处理VisualBrush停止更新问题


本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/wpf-VisualBrush-%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系