Вы можете создать всплывающий класс, который использует слой adorner, чтобы поставить себя поверх всего остального.
Создайте базовый класс для вашего всплывающего окна, у которого есть свойство с именем IsOpen , и при его изменении установите для видимости элементов управления соответствующее значение.
Чтобы остановить элементы управления, которые находятся под щелчком во всплывающем окне, вы можете использовать всплывающее окно в полный размер страницы. Вы бы сделали его в основном прозрачным, за исключением действительной середины, где всплывающее окно. Если вы хотите, чтобы он был полностью прозрачным, за исключением всплывающего окна, вам нужно переопределить 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;
}
Надеюсь, это может указать вам правильное направление.