0

我正在尝试制作 WPF 应用程序(常规 Windows 应用程序,而不是 XBAP 或 Silverlight)。我希望主应用程序窗口支持透明度,并通过下面的桌面显示。

但是,当我在 Button 上指定 ToolTip 文本时,ToolTip 会出现在主窗口下方(z 顺序)!

我有一个屏幕截图,其中: * 另一个应用程序重叠并阻止了部分透明主窗口的视图。* 我的按钮的工具提示出现在其他应用程序的前面。* 工具提示不在其他应用前面的地方,是在部分透明的后面。

我在其他地方读到,这是 32 位 XP 的 WPF 引擎的一个已知问题,在 Vista 中不会发生。

我正在寻找的是修复/解决方法。

4

3 回答 3

1

在您想要的 UIElement 上尝试 .SetValue(Canvas.ZIndex, 100) 方法。(我用了 100,只是为了强制元素到顶部)

于 2009-07-20T19:04:38.110 回答
0

好的-这是我发现的解决方法:

当窗口也被设为 TopMost 时,工具提示的问题就消失了。

但我不希望我的窗口位于最上面,所以我只在我的窗口有键盘焦点时才这样做:

private void Window_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    this.Topmost = true;
}

private void Window_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    this.Topmost = false;
}

然后,仅当我的窗口位于最顶层时,我才使用绑定来启用每个工具提示:

ToolTipService="{Binding ElementName=MainWindow, Path=Topmost}"

这会关闭工具提示,除非它正常工作。当我的窗口不在焦点时,真的不需要工具提示。

现在唯一烦人的事情是必须在定义工具提示的每个元素上进行开/关绑定。

于 2009-07-22T14:23:54.867 回答
0

这是 WIndows XP 和 WPF 的一个已知问题(例如,请参阅此处的 Connect)。

您可以通过不使用分层窗口(使用带框架的窗口)来避免此问题。我认为另一种解决方案是设置整个窗口TopMost=true,但对我来说,这不是一个很好的解决方案,我不确定。

我不知道MS是否正在解决这个问题,因为我认为它在XP的图形层中相当深入。

于 2009-07-20T20:09:35.000 回答