在我的 WPF 应用程序中,我有 ItemsControl,它具有ZoomableCanvas作为面板,它为 Canvas 提供虚拟化机制。这是完美的工作。此 Canvas 需要具有类似背景的图形。当我使用下面的 xaml 时,会生成网格,但仅限于视口的范围(在加载时)。因此,当滚动时,您会看到背景网格被垂直和水平剪切。在 performant-virtualized-wpf-canvas 中,这是通过将子 Visuals 添加到画布作为背景来处理的。
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<ZoomableCanvas x:Name="ZCanvas" Loaded="ZoomableCanvas_Loaded" >
<ZoomableCanvas.Background>
<DrawingBrush TileMode="Tile" Stretch="Fill"
Viewport="0 0 100 60" ViewportUnits="Absolute"
ViewboxUnits="Absolute" >
<DrawingBrush.Drawing>
<GeometryDrawing Geometry="M0,0 L0,1 0.03,1 0.03,0.03 1,0.03 1,0 Z" Brush="Gray" />
</DrawingBrush.Drawing>
</DrawingBrush>
</ZoomableCanvas.Background>
</ZoomableCanvas>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
详细说明问题:请看这些图片:
On Load --- 背景网格是可见的,并且孩子的左边离 0,0 很远
On Scrolling Right and back - 背景网格被剪裁,孩子似乎从 Canvas 中的最左边开始
我们怎样才能有一个 Grid 背景,它延伸了 ZoomableCanvas 的整个宽度?我们如何解决 On Scroll 问题?
真诚感谢任何帮助/提示。