ViewModel
олагая, что у меня есть простой класс, который представляет сотрудника
class Staff
{
public string FirstName { get; set; }
public string FamilyName { get; set; }
public int SecondsAlive { get; set; }
}
и у меня есть DataTemplate для персонала
<DataTemplate DataType={x:Type Staff}>
<StackPanel Orientation="Horizontal">
<TextBlock Text={Binding FirstName}/>
<TextBlock Text=" ">
<TextBlock Text={Binding FamilyName}/>
<StackPanel.ToolTip>
<TextBlock Text={Binding SecondsAlive}/>
</StackPanel.ToolTip>
</StackPanel>
</DataTemplate>
Затем я показываю целую кучу сотрудников в ListBox
myListBox.ItemsSource = GetAllStaff();
Довольно стандартные вещи. У меня проблема в том, что всплывающая подсказка, показывающая количество секунд, в течение которых кто-то был жив, не обновляется. Когда вы в первый раз наводите курсор мыши на сотрудника, он работает нормально, но с тех пор он сохраняет это значение навсегда. Я мог бы реализовать INotifyPropertyChanged, чтобы обойти это, но кажется излишним делать это для каждого сотрудника, когда SecondsAlive меняется. Скажем, у меня 400 сотрудников в списке, тогда мне нужно вызвать 400 событий, даже если пользователь никогда не увидит другую подсказку. Я хотел бы, чтобы подсказка запрашивала свойство SecondsAlive при каждом его отображении. Это возможно?
Обратите внимание, что это всего лишь пример, и мне не нужно знать, сколько секунд мои сотрудники были живы :-) Но у меня есть та же проблема, которую мне нужно поднять даже около 400 раз только для всплывающей подсказки, которую кто-то, вероятно, не буду смотреть на