Добрый день всем,
Я должен работать с устаревшим приложением Winforms, но я хотел бы начать переносить его в WPF. Теперь в нем нет элемента управления всплывающей подсказкой, поэтому я хотел бы использовать объект всплывающей подсказки WPF.
Я создаю один глобальный экземпляр объекта всплывающей подсказки. Я связал элементы управления внутри него, и мое приложение задает текст данных всплывающей подсказки. Я могу вручную показать и скрыть всплывающую подсказку. При первом наведении курсора на объект он отлично получает связанные данные и отлично работает. Когда я перемещаюсь по другому элементу управления, текст подсказки подсказки изменяется, но отображаемые данные никогда не перезагружаются.
Я попытался реализовать событие изменения свойства и использовать интерфейс INotifyPropertyChanged в объекте, к которому привязываю. Похоже, что всплывающая подсказка wpf не прослушивает событие.
Я попытался установить режим привязки на Oneway (это всплывающая подсказка только для отображения).
Всплывающая подсказка создается программно:
// build the tooltip window.
System.Windows.Controls.Image img = new System.Windows.Controls.Image();
img.Width = 50;
img.Height = 60;
// bind the image
System.Windows.Data.Binding imageBinding = new System.Windows.Data.Binding("PatientImage.Data");
imageBinding.Mode = System.Windows.Data.BindingMode.OneWay;
imageBinding.Source = bed;
img.SetBinding(System.Windows.Controls.Image.SourceProperty, imageBinding);
// wrap image in a border
System.Windows.Controls.Border brdr = new System.Windows.Controls.Border();
brdr.BorderBrush = System.Windows.Media.Brushes.Blue;
brdr.Margin = new System.Windows.Thickness(6);
brdr.Child = img;
System.Windows.Controls.WrapPanel wp = new System.Windows.Controls.WrapPanel();
System.Windows.Controls.TextBlock tb = new System.Windows.Controls.TextBlock();
tb.Background = System.Windows.Media.Brushes.LightBlue;
tb.Foreground = System.Windows.Media.Brushes.Blue;
// bind the text block
System.Windows.Data.Binding textBlockBinding = new System.Windows.Data.Binding("TooltipText");
textBlockBinding.Mode = System.Windows.Data.BindingMode.OneWay;
textBlockBinding.Source = bed;
tb.SetBinding(System.Windows.Controls.TextBlock.TextProperty, textBlockBinding);
wp.Children.Add(brdr);
wp.Children.Add(tb);
bedTooltip = new System.Windows.Controls.ToolTip();
bedTooltip.Content = wp;
Есть идеи, почему это не работает? Может быть, мне нужно использовать объект всплывающей подсказки для каждого элемента управления вместо одного глобального в качестве обходного пути?