Wpf 有没有办法用鼠标拖动/调整画布的大小?

Wpf 有没有办法用鼠标拖动/调整画布的大小?,wpf,wpf-controls,Wpf,Wpf Controls,我使用的画布中嵌入了一个扩展器,因此当扩展器展开时,它将覆盖下面的控件 <Canvas Grid.Row="0" Panel.ZIndex="99"> <Border Width="450" BorderThickness="1"> <Expander etc /> </Border> </Canvas> &l

我使用的画布中嵌入了一个扩展器,因此当扩展器展开时,它将覆盖下面的控件

        <Canvas Grid.Row="0" Panel.ZIndex="99">
            <Border Width="450" BorderThickness="1">
                <Expander etc />
            </Border>
        </Canvas>
        <OtherControls Grid.Row="1"/> etc

有没有一种方法可以让用户拖动画布的大小而不是设置画布的大小?

这里有一个想法:将所有内容都放到网格中。让网格自动调整大小,将画布放在网格中(确保它占据整个网格),使其符合父网格的大小:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Canvas Background="Transparent" Grid.RowSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

    <Border Width="450" BorderThickness="1">
            <Expander etc />
    </Border>

    <OtherControls Grid.Row="1"/>
</Grid>

不确定这可能有多重要,但请查看这篇文章。也许它会给你一些想法(我4年前写的,太长了,记不住细节,但代码编译并运行):


但您没有设置画布的大小。或者你的意思是“而不是设置边界的大小”?但是画布只有在需要显式大小时才有用——如果不想设置显式大小,就不应该使用画布。也许你应该详细说明为什么要使用画布。根据您所描述的,我看不出为什么画布与将多个控件放在同一个Grid.Row中相比对您有任何好处。@Joe White Canvas在以编程方式处理cooardinates时具有某些优势。假设我可以使用Canvas.GetTop(x),但我不能将其与网格一起使用。