gpt4 book ai didi

wpf - 为什么我的面板在小于明确尺寸时会一直夹在面板周围?

转载 作者:行者123 更新时间:2023-12-04 17:57:19 24 4
gpt4 key购买 nike

可能是一个令人困惑的问题标题。

带有红色矩形的网格是它的外观示例。

带有蓝色矩形的网格(未出现在图像中)有一个边距,强制第二个网格比我明确设置的要小。这似乎导致 WPF 翻转并隐藏其排列范围之外的所有内容。

enter image description here

我试过将剪辑设置为大于网格。

我能够避免这种情况的唯一方法是编写一个自定义面板,用 PositiveInfinity 的约束来测量它的子级,然后以正确的宽度排列子级。这种方法有很多问题。对 child 撒谎是不好的。

无论如何,这是代码:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="NegativeMarginTooMuchClipping.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640"
Height="400">

<Grid>
<StackPanel Width="600" Height="300">
<Grid Margin="40,50,60,50" Background="#FFB8B8B8" Width="500" Height="50">
<Rectangle Fill="Red" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="50" Margin="0,-50,0,0"/>
</Grid>
<Grid Margin="40,50,61,50" Background="#FFB8B8B8" Width="500" Height="50">
<Rectangle Fill="Blue" HorizontalAlignment="Left" Height="50" VerticalAlignment="Top" Width="50" Margin="0,-50,0,0"/>
</Grid>
</StackPanel>
</Grid>

已知问题?我做错了吗?需要更多说明吗?

最佳答案

确定某些内容如何剪辑需要三件事。前两个是ClipToBoundsClip ,但第三个更烦人,那就是 GetLayoutClip .

默认情况下,对于 UIElement,GetLayoutClip 方法将返回 null 或与元素大小相同的 RectangleGeometry,具体取决于 ClipToBounds 属性。 FrameworkElement 及其派生类要复杂得多。看看 Reflector/ILSpy,你就会明白我的意思。

不过,您可以覆盖此行为。如果您使用类似以下内容作为蓝色矩形的网格,则它将不再被剪裁:

public class MyGrid : Grid {
protected override Geometry GetLayoutClip(Size layoutSlotSize) {
return null;
}
}

here 上有一篇很棒的博客文章.

关于wpf - 为什么我的面板在小于明确尺寸时会一直夹在面板周围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com