2

在我的 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 问题?

真诚感谢任何帮助/提示。

4

0 回答 0