0

WPFアプリ(XBAPやSilverlightではなく通常のWindowsアプリ)を作成しようとしています。メインアプリウィンドウで透明度をサポートし、下のデスクトップに表示したい。

しかし、ボタンでツールチップテキストを指定すると、ツールチップがメインウィンドウの(Zオーダー)に表示されます。

次のスクリーンショットがあります。*別のアプリが重なり、部分的に透明なメインウィンドウの表示をブロックします。*ボタンのツールチップが他のアプリの前に表示されます。*ツールチップが他のアプリの前にない場合、部分的な透明度の後ろにあります。

これは32ビットXP用のWPFエンジンの既知の問題であり、Vistaでは発生しないことを他の場所で読みました。

私が探しているのは修正/回避策です。

4

3 に答える 3

1

一番上にあるUIElementで.SetValue(Canvas.ZIndex、100)メソッドを試してください。(私は100を使用しましたが、要素を上に強制するためだけに使用しました)

于 2009-07-20T19:04:38.110 に答える
0

これは、Windows XPおよびWPFの既知の問題です(たとえば、Connectのここを参照してください)。

レイヤードウィンドウを使用しないことで問題を回避できます(フレーム付きのウィンドウを使用してください)。別の解決策は、ウィンドウ全体をTopMost = trueに設定することだと思いますが、私にとっては、それはあまり良い解決策ではなく、それについてはよくわかりません。

MSがこの問題に取り組んでいるかどうかはわかりません。XPのグラフィックレイヤーのかなり深いところにあると思うからです。

于 2009-07-20T20:09:35.000 に答える
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 に答える