我有一个自定义的Panel实现,它可以渲染相对于物理空间的对象(就像平面图一样)。该面板允许以下操作:
该面板与屏幕上的其他几个元素共存,我需要确保自定义面板的图形不会溢出导航和其他控件。
问题在于:
如果面板设置为剪辑,它会在排列之前剪切孩子。
假设我在平面图中有一个圆圈,并且用户放大到足以使圆圈大于父控件。面板对圆圈应用剪裁,就像它被放置在死点一样,然后将圆圈排列在它应该是的位置。最终结果是圆圈看起来不再像圆圈,我的图像中有间隙。
我需要在排列元素之后应用来应用裁剪,或者仅应用于由孩子编译的整体图像。我怎么能这样做?
答案 0 :(得分:0)
事实证明,我在给WPF博士的信中遇到了问题的相反问题ClipToBounds = "Maybe"
如果我覆盖控件中的GetLayoutClip()
方法并返回null,我基本上会关闭元素的剪切。但是,由于我的面板仍然存在ClipToBounds
,因此呈现的项目不会溢出应用程序的其余部分。
在将添加到我的自定义面板的所有项目的基类中,我有:
protected override Geometry GetLayoutClip(Size layoutSlotSize)
{
return null;
}
就我而言,这正是我想要的。老实说,我希望我的布局剪辑基于父面板而不是子尺寸(面板内没有位置感)。