![]() |
1
5
老实说,我读这篇文章的时候不相信你,所以我不得不亲自去测试它,事实上你是对的。不过,我不认为你会有任何运气找到规则,因为进一步的调查让我相信这是WPF网格中的一个bug。我做了一些测试,看看我是否能找出行为,但是如果你只是想知道最后的结论,请随意滚动到下面的文章。 对不起,如果结果不清楚的话,我是怎么写出来的。前三个数字是我为每列输入的大小调整值,其余的是结果大小。 试验1:
网格300 x 300承载80像素宽的轮廓。网格有三列,控件跨越列0和1:
因此,我可以想出一些规则:
试验2:
网格300 x 300,其中3列承载一个控件,第0行的跨栏列0和2宽80像素,第1行的第1列的第二个控件宽80像素
(*)事实并非如此。列1设置为大小80,但只绘制非跨度元素的一部分。我使用按钮作为元素,而非跨距按钮的铬合金填充了80像素宽的第一列,但文本被剪裁成30像素的大小。基本上,它完全被拧死了。 从这个测试中,我可以添加另外两个规则:
所以,我想我们可以把这些规则结合成一个整体的理念: 如果一个元素跨越多个列,并且其中至少有一个(但不是全部)列是自动调整大小的,则必须有另一个不跨越的元素来为自动调整大小的列提供大小。否则,这种行为充其量是出人意料的,充其量是腐败。 尽管可以向微软提出一个bug,但由于这是网格控件的定义行为,我想我们在WPF的整个生命周期中都会一直使用它。 |
![]() |
2
0
以下是操作方法:
|
![]() |
3
-1
我不知道互联网上有没有完整的描述。 我知道,自动意味着它会问孩子控制他们想要多大。星号(*)表示它将占用它剩下的所有房间… 编辑:即时更新.. 宽度(ColumnDefinition)和高度(RowDefinition)是网格长度结构: |
![]() |
Kryptonit364 · 在DataGrid中隐藏调整大小和选择列 2 年前 |
![]() |
hassan Ma · 从顶部将文本插入WPF文本块 2 年前 |
![]() |
Arijit · 移动画布内绘制的矩形 2 年前 |
![]() |
juraj14466 · C#WPF实时图表将点渲染为图像 2 年前 |