Принуждение подсказки WPF остаться на экране

name=[];
for_loop
    filename = 'string';
    name=[name; {filename}];
end
111
задан Contango 24 May 2019 в 08:42
поделиться

4 ответа

Я боролся с WPF Tooltip только на днях. Кажется, невозможно остановить его появление и исчезновение само по себе, поэтому в конце концов я обратился к обработке события Opened . Например, я хотел, чтобы он не открывался, если в нем нет содержимого, поэтому я обработал событие Opened , а затем сделал следующее:

tooltip.IsOpen = (tooltip.Content != null);

Это взлом, но он сработал.

Предположительно, вы могли бы аналогичным образом обработайте событие Closed и скажите ему снова открыться, таким образом сохраняя его видимым.

5
ответ дан 24 November 2019 в 02:58
поделиться

Вы, вероятно, захотите использовать Popup вместо Tooltip, поскольку Tooltip предполагает, что вы его используете в соответствии с предопределенными стандартами пользовательского интерфейса.

Я не уверен, почему StaysOpen не работает, но ShowDuration работает так, как описано в MSDN - это количество времени, в течение которого всплывающая подсказка отображается КОГДА она отображается. Установите небольшое значение (например, 500 мс), чтобы увидеть разницу.

Уловка в вашем случае заключается в поддержании состояния «последний зависший элемент управления», но если у вас есть это, должно быть довольно просто изменить цель размещения и контент динамически (вручную или через привязку), если вы используете одно всплывающее окно, или скрытие последнего видимого всплывающего окна, если вы используете несколько.

Есть некоторые подводные камни со всплывающими окнами, касающимися изменения размера и перемещения окон (всплывающие окна не перемещаются с контейнерами), поэтому вы можете также помнить об этом, когда настраиваете поведение. Подробнее см. по этой ссылке .

HTH.

так что вы можете иметь это в виду, когда настраиваете поведение. Подробнее см. по этой ссылке .

HTH.

так что вы можете иметь это в виду, когда настраиваете поведение. Подробнее см. по этой ссылке .

HTH.

8
ответ дан 24 November 2019 в 02:58
поделиться

Также, если вы когда-нибудь захотите добавить какой-либо другой элемент управления в свою подсказку, это не будет фокусируемым, так как всплывающая подсказка может получить фокус. Итак, как сказал микахтан, ваш лучший снимок - всплывающее окно.

0
ответ дан 24 November 2019 в 02:58
поделиться

TooltipService.ShowDuration работает, но вы должны установить его для объекта, имеющего всплывающую подсказку, например:

<Label ToolTipService.ShowDuration="12000" Name="lblShowTooltip" Content="Shows tooltip">
    <Label.ToolTip>
        <ToolTip>
            <TextBlock>Hello world!</TextBlock>
        </ToolTip>
    </Label.ToolTip>
</Label>

Я бы сказал, что этот дизайн был выбран, потому что он допускает ту же всплывающую подсказку с разными таймаутами на разных элементах управления.

173
ответ дан 24 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

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