Можно ли отобразить все доступные всплывающие подсказки внутри элемента управления? - PullRequest
0 голосов
/ 03 апреля 2020

Для документации приложения WPF мне нужен снимок экрана со всеми активированными подсказками.

Я попытался объединить снимки экрана приложения с одной подсказкой, активированной на каждом изображении, но я не эксперт PS / Gimp, и мне нужно комбинировать множество изображений.

1 Ответ

0 голосов
/ 03 апреля 2020

На основании этого ответа вы можете выполнить итерацию по всем дочерним элементам типа FrameworkElement в приложении, чтобы активировать их всплывающую подсказку (если есть).

Чтобы активировать подсказку вы можете использовать этот ответ .

Наконец, вы можете добавить кнопку «Показать все подсказки» в вашем приложении, и код будет выглядеть так:

private void DisplayAllToolTips_OnClick(object sender, RoutedEventArgs e)
{
    foreach (var element in FindVisualChildren<FrameworkElement>(this))
    {
        if (element.ToolTip == null)
            continue;

        var toolTip = element.ToolTip as ToolTip ??
                      new ToolTip {Content = element.ToolTip};

        element.ToolTip = toolTip;

        toolTip.PlacementTarget = element;
        toolTip.Placement = PlacementMode.Relative;
        toolTip.HorizontalOffset = 6;
        toolTip.VerticalOffset = -6;
        toolTip.Opacity = 0.8;

        toolTip.IsOpen = true;
    }
}

private static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
    if (depObj == null)
        yield break;

    for (var i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
    {
        var child = VisualTreeHelper.GetChild(depObj, i);
        if (child is T t)
            yield return t;

        foreach (var childOfChild in FindVisualChildren<T>(child))
            yield return childOfChild;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...