将 ViewBox 中的 WPF 画布与父网格对齐

本文关键字:网格 对齐 ViewBox 中的 WPF | 更新日期: 2023-09-27 17:56:19

我有一个一列的表格布局。顶部有一个画布,一个拆分器,然后是一个数据网格。我想将画布(在视图框中)限制在上部网格区域。如何防止画布只是在任何地方渲染,而只在"上部"网格中渲染?

<Grid VerticalAlignment="Stretch">
            <Grid.RowDefinitions>
                <RowDefinition Height="5*"/>
                <RowDefinition Height="auto"/>
                <RowDefinition Height="2*"/>
            </Grid.RowDefinitions>    
                <Viewbox Stretch="Uniform"><Canvas x:Name="canvas" /></Viewvox>

                <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" ResizeDirection="Rows" VerticalAlignment="Center" HorizontalAlignment="Stretch"/>
                <DataGrid x:Name="dataGrid" />    
</Grid>

将 ViewBox 中的 WPF 画布与父网格对齐

  1. Canvases必须始终与宽度/高度一起使用。您希望ViewBox缩放画布,但它不知道画布有多大。
  2. 画布还应将ClipToBounds设置为 true
  3. 如果您不知道 Canvas 应该有多大,因为内容可以放置在任何地方,那么您应该考虑使用其他面板。所有Shape类都可以放置在任何面板上。