Табличка данных WPF:Как создать всплывающую подсказку точно в срок?
-
12-09-2019 - |
Вопрос
Я использую DataTemplates для отображения элементов в ItemsControl.Я хочу показать всплывающую подсказку для каждого элемента.Если я использую привязку, такую как ToolTip="{Привязка MyToolTip,Mode=OneWay}", WPF получает всплывающую подсказку один раз в начале и не обновляет всплывающую подсказку при ее открытии.
Мои элементы реализуют INotifyPropertyChanged, поэтому в принципе я мог бы генерировать уведомления об изменениях для MyToolTip.Проблема в том, что всплывающая подсказка создается на основе многих фрагментов информации в базовой модели.Эти фрагменты информации часто меняются, и генерировать уведомления об изменениях для свойства MyToolTip было бы громоздко и неэффективно.Кроме того, я не хочу, чтобы всплывающие подсказки для ВСЕХ элементов создавались изначально.Вместо этого я хотел бы принудительно сгенерировать новую всплывающую подсказку при открытии всплывающей подсказки.Как я могу это сделать?
Решение
Вам придется использовать небольшой код, но это не так уж плохо.
<object ToolTip="{Binding MyToolTip, Mode=OneWay}" ToolTipOpening="MyToolTip_Opening" />
В коде-за
private void MyToolTip_Opening(object sender, ToolTipEventArgs e)
{
DependencyObject depObj = sender as DependencyObject;
if (depObj == null) return;
BindingExpression be = BindingOperations.GetBindingExpression(depObj, FrameworkElement.ToolTipProperty);
if (be != null) be.UpdateTarget();
}