如何在拉伸容器的同时保持画布固定大小

时间:2018-07-25 08:05:35

标签: c# .net wpf canvas border

我正在尝试为图像创建一个非常简单的编辑器。由于控制面板显示在Canvas的旁边,因此我想在它们之间加一个边框(不过,我对GridSplitter之类的建议持开放态度)。我的Canvas嵌套在ScrollViewer中,嵌套在Border中。当图像加载到画布中时,如果我调整窗口大小,则图像将与其他所有内容一起调整大小。由于我正在编辑此图像,因此我希望将其保持为原始大小,如果Canvas很大,请使用ScrollViewer进行处理。我不知道是否最好将边框放在“控制面板”周围。

XAML代码:

<Border BorderBrush="Black" BorderThickness="2" Grid.Column="2" Grid.Row="0" Grid.RowSpan="10" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <ScrollViewer x:Name="canvas_RosetteMap" Height="Auto" Width="Auto" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
        <Canvas Grid.Column="2" HorizontalAlignment="Center" Height="Auto" Grid.Row="0" Grid.RowSpan="10" VerticalAlignment="Center" Width="Auto"/>
    </ScrollViewer>
</Border>

1 个答案:

答案 0 :(得分:0)

您应该改用GridCanvas不擅长调整大小,滚动或类似操作。这是一个应该与Image一起使用的简单示例:

<Border BorderBrush="Black" BorderThickness="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <ScrollViewer x:Name="canvas_RosetteMap" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Visible">
        <Grid Width="Auto">
            <TextBox Background="Beige" VerticalAlignment="Top" HorizontalAlignment="Left"/>
        </Grid>
    </ScrollViewer>
</Border>