Табличка данных WPF:Как создать всплывающую подсказку точно в срок?

StackOverflow https://stackoverflow.com/questions/967217

Вопрос

Я использую 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();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top