WPF - Динамическая подсказка - PullRequest
3 голосов
/ 06 мая 2009

У меня есть класс ToolTipProvider у которого есть метод

string GetToolTip(UIElement element)

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

Я хочу разрешить использовать его в любой форме wpf с минимальными усилиями разработчика. По сути, я хочу вставить ObjectDataProvider ресурс в Window.Resources, чтобы обернуть мой ToolTipProvider объект, затем я думаю, что мне нужно создать всплывающую подсказку (называемую, например, MyToolTipProvider) в ресурсах, которые ссылаются на этот ObjectDataProvider, а затем элемент, который требует этой функции всплывающей подсказки, это был бы случай ToolTip="{StaticResource MyToolTipProvider}" однако я не могу понять, а) как связать сам фактический элемент с MethodParameters объекта-поставщика данных, или б) как заставить его вызывать метод каждый раз, когда открывается всплывающая подсказка.

Какие-нибудь идеи / указатели на общую схему мне нужны? Не ищите полного решения, просто идеи от более опытных

Ответы [ 2 ]

1 голос
/ 25 июля 2009
  1. Создание нового пользовательского элемента управления, который работает как фабрика представления подсказок.

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

<AnyControl>
    <AnyControl.ToolTip>
        <YourToolTipControl Content="{Binding}" />
    </AnyControl.ToolTip>
</AnyControl>
0 голосов
/ 06 мая 2009

Не называя себя экспертом, но я, вероятно, попробую такую ​​функцию с прикрепленным свойством. Это может быть присоединено к любому элементу в вашем пользовательском интерфейсе, и вы можете указать обработчик события, который получает доступ к объекту, к которому присоединяется свойство, а также значение, передаваемое присоединенному свойству. Вы можете сохранить ссылку на элемент, к которому было прикреплено ваше присоединенное свойство, и тогда вы сможете изменить всплывающую подсказку в любое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...