WPF 的 VisualBrush
可以帮助我们在一个控件中显示另一个控件的外观。这是非常妙的功能。
但是本文需要说其中的一个 Bug —— 如果使用 VisualBrush 显示另一个控件的外观,那么只会在其显示效果有改变的时候刷新,而不会在目标布局改变的时候刷新布局。
用于复现问题的代码
我们现在做一个可以用于验证此问题的布局。
在一个大的 Grid
容器中有一个 Grid
和一个 Border
,这个 Grid
将放一个大面积的 Rectangle
和一个表示内容的 TextBlock
;而那个 Border
将完全以 VisualBrush
的形式呈现,呈现的内容是此 Grid
中的全部内容。
它的完整 XAML 代码如下:
<Window x:Class="Walterlv.Demo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Walterlv 的 WindowChrome 示例窗口" Height="450" Width="800"
WindowStartupLocation="CenterScreen">
<Gri