WPF的Canvas如何在程序运行时动态地调整布局?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的Canvas如何在程序运行时动态地调整布局?相关的知识,希望对你有一定的参考价值。

具体问题描述是这样的:
我有一个前台的Grid,分成三行,每行都有一个单独的canvas,希望每一行都各司其职显示不同的东西。但是,比如说我先往第2行的canvas中画了一个东西A,再在第1行的canvas中绘制东西B的时候,就会直接挡住第2行中的东西.请问应该如何写才可以解决这样的问题?即当我往第1行的Canvas中绘制图像时,canvas2会自动地往下移动,使得两个图像不会重复?
//
<Canvas Grid.Column="1" Grid.Row="0" Name="canvasBackGround"></Canvas>
<Canvas Grid.Column="1" Grid.Row="1" Name="canvasSingleEvent"></Canvas>
//
p.s:我的每个Canvas中到时都可能动态地添加不少的自定义控件,我让他们上下分离是通过设置每个控件的margin值实现的。

Canvas是绝对定位,你应该选择Grid来实现你的需求追问

挡了...
我在grid里分了三行,第一行存一个canvas画图
第2行存了几个stackpanel
第三行放了两个按钮,结果第三行的按钮直接和第一行的canvas重在了一起。

追答

第三行设置这两个按钮的行了没有,类似于

追问



//1

//2
//3

我想让最后一个WrapPanel 显示在最下面,而不要挡住上面的3个东西.

追答

wrapPanel和三个StackPanel调整一下位置,WrapPanel放在第一位置。
这是因为DockPanel默认的是最后一个Child填充所有剩余的位置

参考技术A 直接用StackPanel面板控制。保证不会遮挡。

以上是关于WPF的Canvas如何在程序运行时动态地调整布局?的主要内容,如果未能解决你的问题,请参考以下文章

WPF教程四;布局之Canvas面板

动态地,在运行时,如何在 WPF 中更改文本框中某些单词的颜色?

WPF 之 布局

如何在WPF中动态创建布局(MVVM模式)

WPF界面布局——Canvas

自动布局:窗口调整大小时如何更改框架的原点?