Рисование сетки на холсте без заполнения родительского элемента при уменьшении масштаба - PullRequest
0 голосов
/ 30 мая 2019

Возможность рисовать 2D-сетку на холсте, чьим родителем является Grid, но когда scrollViewer сетки уменьшается, 2D-сетка не полностью заполняет Grid (или Canvas, не уверенный, какой это).

Использование решения, приведенного в статье "wpfhow-to-draw-a-grid-on-canvas"

<UserControl x:Name="boardViewControl" x:Class="FWPFControlLibrary.BoardView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:FWPFControlLibrary"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid Background="{DynamicResource {x:Static SystemColors.AppWorkspaceBrushKey}}">
        <ScrollViewer x:Name="scrollViewer" Margin="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" PanningMode="Both" PreviewMouseWheel="scrollViewer_PreviewMouseWheel" ManipulationDelta="scrollViewer_ManipulationDelta">
            <Canvas x:Name="boardView"  Width="300" Height="300">
                <Canvas.Background>
                    <DrawingBrush TileMode="Tile" Viewport="-10,-10,20,20" ViewportUnits="Absolute">
                        <DrawingBrush.Drawing>
                            <GeometryDrawing>
                                <GeometryDrawing.Geometry>
                                    <RectangleGeometry Rect="0,0,100,100"/>
                                </GeometryDrawing.Geometry>
                                <GeometryDrawing.Pen>
                                    <Pen Brush="Gray" Thickness="1"/>
                                </GeometryDrawing.Pen>
                            </GeometryDrawing>
                        </DrawingBrush.Drawing>
                    </DrawingBrush>
                </Canvas.Background>
            </Canvas>
        </ScrollViewer>
        <Slider x:Name="zoomSlider" HorizontalAlignment="Right" VerticalAlignment="Bottom" Minimum="0.10" Maximum="3" SmallChange="0.10" TickFrequency="0.25" TickPlacement="TopLeft" Value="1" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" Orientation="Vertical" Height="100" Margin="0,0,25,25" LargeChange="0.25" />
    </Grid>
</UserControl>

При увеличении масштаба области справа и снизу остаются пустыми. Я ожидаю, что 2D-сетка полностью заполнит доступную область, но это не так. Есть ли какая-то привязка, которую нужно добавить к этому коду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...