我正在尝试制作WPF应用程序(常规Windows应用程序,而不是XBAP或Silverlight)。 我希望主应用程序窗口支持透明度,并通过下面的桌面显示。
但是当我在Button上指定ToolTip文本时,工具提示会在主窗口的(z-order)下面显示!
我有截图,其中: *另一个应用程序重叠并阻止部分透明主窗口的视图。 *我的按钮的工具提示出现在另一个应用程序的前面。 *如果工具提示不在其他应用程序的前面,则隐藏部分透明度。
我在其他地方读到,这是用于32位XP的WPF引擎的已知问题,并且在Vista中不会发生。
我正在寻找的是修复/解决方法。
答案 0 :(得分:1)
在你想要的UIElement上尝试.SetValue(Canvas.ZIndex,100)方法。 (我使用100,只强制元素到顶部)
答案 1 :(得分:0)
这是WIndows XP和WPF的已知问题(例如,请参见此处on Connect)。
您可以通过不使用分层窗口来避免此问题(使用带框架的窗口)。我认为另一个解决方案是设置整个窗口 TopMost = true ,但对我来说,这不是一个非常好的解决方案,我不确定。
我不知道MS是否正在解决这个问题,因为我认为它在XP的图形层中相当深。
答案 2 :(得分:0)
好的 - 这是我发现的解决方法:
当窗口也是TopMost时,ToolTips的问题就消失了。
但我不希望我的窗户位于最顶层,所以我只在窗口有键盘焦点时才这样做:
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}"
除非工作正常,否则会关闭工具提示。 无论如何,当我的窗口没有聚焦时,真的不需要工具提示。
现在唯一令人讨厌的事情是必须在定义工具提示的每个元素上进行开/关绑定。