装飾層を使用してそれ自体を他のすべての上に配置するポップアップ クラスを作成できます。
IsOpenというプロパティを持つポップアップの基本クラスを作成し、変更されたときにコントロールの可視性を適切な値に設定します。
ポップアップの下にあるコントロールがクリックされるのを止めるには、ポップアップをページ全体のサイズにすることができます。ポップアップが表示される実際の中央を除いて、ほとんど透明になります。ポップアップに対して完全に透過的な execpt にしたい場合は、ポップアップで HitTestCore をオーバーライドする必要があります。
このようなもの:
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
// We want this control to behaive as a single rectangle and we don't much care
// whether or it has a solid background. So we override this method so we can have // mouse over info for the entire panel regardless of background.
// run the base hit test first, because if it finds something we don't want to overrule it.
HitTestResult result = base.HitTestCore(hitTestParameters);
// If we didn't get a hit generate a new hit test result, because HitTestCore is never called unless
// the mouse is over the controls bounding rectangle.
if (result == null)
result = new PointHitTestResult(this, hitTestParameters.HitPoint);
return result;
}
これが正しい方向に向けられることを願っています。