将ViewBox中的WPF Canvas约束到父网格

时间:2016-07-11 03:25:56

标签: c# wpf

我有一个包含一列的表格布局。顶部有一个画布,然后是分割器,然后是数据网格。我想将画布(在Viewbox中)约束到上部网格区域。如何防止画布只是在任何地方渲染,而只是在" upper"格?

<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>

1 个答案:

答案 0 :(得分:0)

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