Лучшее решение для создания MouseOver Preview? - PullRequest
1 голос
/ 30 октября 2010

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

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

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

Крис

1 Ответ

0 голосов
/ 31 октября 2010

Похоже, вам может понадобиться визуализировать и кэшировать элементы управления заранее, используя для их прогнозирования значения. Затем сохраните их внешний вид как замороженные ImageBrushes в словаре, заданном их конфигурацией. Не похоже, что вы получите решение только для просмотра для этого довольно специфичного для приложения требования.

Насколько изменяются данные конфигурации ViewModel при взаимодействии пользователя со страницей? Как скоро вы сможете кешировать? Если вы знаете все данные заранее, вы можете начать рендеринг снимков сразу после загрузки. Если вы ожидаете ввода, вы не сможете компенсировать время рендеринга, чтобы пользователь не заметил его. Но, похоже, это ваша цель - убедиться, что пользователь не оплачивает стоимость рендеринга в момент наведения мыши. Может быть, подойдет образец снимка соответствующей модели ViewModel, содержащей данные образца?

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