为透明的点击覆盖寻找一个好的WPF解决方案

时间:2010-10-07 00:56:41

标签: c# wpf .net-3.5 mvvm

我想尝试不同的东西,并且我试图在我当前的WPF GUI上显示一个覆盖图,允许用户仍然与GUI进行交互,但是提供了一层烦恼,让他们知道某些事情已经发生了。< / p>

我的问题实际上是两个不同的问题:

1。你会怎么做叠加?

我的第一次尝试是使用矩形,将填充设置为适当的颜色,然后更改不透明度。但点击率并不透明。所以我认为根据搜索结果,我想要做的是创建一个单独的窗口,将其Background设置为Transparent,然后将allowsTransparency设置为True。虽然这有效,但如果我想执行Background="DarkRed" Opacity="0.2"之类的操作,则点按不再有效

这引导我进入第二部分:

2。如果我正在使用MVVM,那么调整此叠加区域大小的正确方法是什么?

我的主窗口创建了ViewModel,它创建了Model。模型是唯一知道是否应该显示叠加层的东西。但主窗口显然是唯一知道其大小的东西,而模型从不知道它上面的任何东西。实现此目的的唯一方法是将覆盖窗口的大小数据绑定到ViewModel中的属性,然后让ViewModel在主窗口大小发生变化时设置这些值吗?

任何人都有关于我如何能够完成所有这些事情的线索?

1 个答案:

答案 0 :(得分:17)

要解决第1部分:在叠加层上设置IsHitTestVisible="False",无论是矩形,边框还是其他元素。这将允许您在不影响与底层控件的交互的情况下使其达到您想要的任何颜色和透明度级别。

第2部分:您不应该使用单独的窗口。如果将叠加层保留在主窗口中,则可以依赖视图中的布局来自动处理叠加层的大小。

相关问题