【发布时间】:2014-08-08 16:43:24
【问题描述】:
好的,我的 WPF 应用程序有问题。到目前为止,我设法制作了一个具有透明背景的窗口(+ 无刷)。如果我的窗口聚焦,我还添加了功能。所以很明显我的窗口不应该被聚焦(因为透明度)。这是可行的,但是当我添加让我们说矩形(在画布上)时:
Rectangle testRectangleForText = new Rectangle();
testRectangleForText.Stroke = Brushes.Black;
testRectangleForText.StrokeThickness = 5;
testRectangleForText.Fill = null;
testRectangleForText.Height = 300;
testRectangleForText.Width = 300;
Canvas.SetLeft(testRectangleForText, 0);
Canvas.SetTop(testRectangleForText, 20);
myCanvas.Children.Add(testRectangleForText);
矩形是可点击的,如果我点击它,我的应用程序将获得焦点(applicationFocus 函数显示 messageBox),我不希望这样。我已经找到了 Win 表单的解决方案,但不是 WPF,这就是我在这里问这个的原因。 win表格的解决方案在这里:WINFORM SOLUTION
好的,现在举个例子,我想要实现的目标: example image
所以红色区域是我的窗口(WPF APP)大小。背景是透明的(显然)。后台应用程序是记事本。我们可以在 Canvas 上看到文本和矩形。 现在,如果我单击 1.(first) 箭头,这是顺便说一句透明区域,什么也没有发生(这很好)。如果我点击 2.(second) 箭头,会出现 MessageBox,这意味着我的 WPF APP 已获得焦点,这就是我不想要的。
【问题讨论】:
-
尝试将矩形的
Fill属性设置为{x:Null},即为空画笔。空画笔与透明画笔不同,不会对鼠标点击做出反应。 -
什么是 testRectangleForText.Fill = null; ?无论如何,矩形仍然是可点击的(因为“中风”),中风是黑色的。它必须是,所以我可以看到矩形:)。
标签: c# wpf transparency clickable