WPF: Лучший способ повысить всплывающее окно, которое модально к странице?

16
задан Eduardo Molteni 9 January 2009 в 18:41
поделиться

3 ответа

Этот ответ StackOverflow может помочь Вам на Вашем пути. Я создал некоторый пример кода, который попросили некоторые другие пользователи. Я добавил это к сообщению в блоге здесь .

Hope это помогает!

17
ответ дан 30 November 2019 в 21:29
поделиться

Windows не нравится, когда Вы делаете это - это не вещь WPF. Используйте лежащую панель и используйте видимое или zorder свойство.

Википедия имеет хорошее обсуждение.

1
ответ дан 30 November 2019 в 21:29
поделиться

Вы могли сделать раскрывающийся класс, который использует adorner слой для помещения себя ontop всего остального.

Делают базовый класс для Вашего всплывающего окна, которое имеет свойство, названное IsOpen и когда это изменяется, устанавливает видимость средств управления на соответствующее значение.

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

я надеюсь, что это может указать на Вас в правильном направлении.

3
ответ дан 30 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: