如何创建不在 WPF 中拉伸的重复可滚动背景?

How to create a repeated scrollable background that does not stretch in WPF?

我想创建一个重复的可滚动背景,当 window 尺寸变小时不会拉伸。这是我的简化代码及其结果:

<ScrollViewer Grid.Column="0"   x:Name="leftpan" Grid.ColumnSpan="2">
            <Grid Height="1000" Width="{Binding Width, ElementName=ppp}" ShowGridLines="False" >
                <Grid.Background>
                    <ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile" Viewport="0,0,0.2,0.2" />
                </Grid.Background>

                <WrapPanel x:Name="bookraw" >
                    <WrapPanel.Effect>
                        <DropShadowEffect Direction="270" ShadowDepth="8" Opacity="0.6" BlurRadius="6"/>
                    </WrapPanel.Effect>
                </WrapPanel>
            </Grid>
        </ScrollViewer>

上面代码的结果是这样的:

我的结构应该是这样的:背景网格随着上下滚动而移动,当滚动宽度改变时,重复的背景不会水平拉伸。

当容纳背景的网格宽度发生变化时,它的背景图块会拉伸。但在 Height 它没有问题,因为它的高度是恒定的。主要目标是让滚动查看器具有平铺背景,其背景不会拉伸。

对于固定的图块大小,以绝对单位设置 ImageBrush 的视口:

<ImageBrush ImageSource="bg/libChef2.png" TileMode="Tile"
            Viewport="0,0,100,100" ViewportUnits="Absolute" />