将WPF弹出窗口剪裁到主窗口的边界

3
据我所知,弹出框存在于自己的视觉树中。但是,我注意到了一些属性,如Clip和ClipToBounds。我想要做的是在窗口的右侧和底部视觉上剪裁弹出框,而不管弹出框是否独立于窗口的边界。我没有使用XAML,但如果有人知道如何在XAML中实现这个功能,那就没问题了。我可以通过System.Windows.Application.Current.MainWindow来访问主窗口。从这里是否有可能获得一个值,我可以用它来剪裁弹出框?我假设如果有一个可用的值,那么我将能够将弹出框的剪裁绑定到该值。这真的不是必需的,因为在弹出框最初打开后,如果窗口被移动或调整大小,弹出框将关闭。因此,我只需要在弹出框打开时剪裁它。我之所以这样做是因为尽管我使用了弹出框,但我不希望它像一个存在于窗口外的弹出框那样显示。顺便说一下,这是为自定义日期框的弹出式日历而设计的。任何想法,以及可能存在的误解的澄清,都将不胜感激。
2个回答

1
此外,弹出窗口可以从不直接位于主窗口上的用户控件中启动。因此,在这种情况下,使用弹出窗口会更容易。而不是在XAML中使用用户控件。

0

我知道这是一篇一年前的帖子,但如果有其他人在这里寻找答案... 如果您不需要弹出窗口在窗口外面,为什么要使用弹出窗口呢?更容易的方法是在画布中使用控件,并通过其可见性属性来控制它。然后您将自动获得剪辑效果。


1
我正在使用弹出窗口,以便它可以覆盖WPF应用程序上托管的WinForm控件。似乎没有其他东西能够覆盖Winform,因此弹出窗口是唯一的选择。无法在屏幕范围之外呈现弹出窗口非常令人沮丧。 - Stephen Price
1
我使用弹出窗口,因为我的窗口具有<StackPanel>作为其内容根元素,并且其中包含一个<DataGrid>。没有明显的方法可以在DataGrid上方显示进度/活动旋转器,除非使用Popup - Dai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接