class Staff
{
public string FirstName { get; set; }
public string FamilyName { get; set; }
public int SecondsAlive { get; set; }
}
我有一个针对员工的数据模板
<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>
我随后在一个列表框中展示了一大堆的内容
myListBox.ItemsSource = GetAllStaff();
很标准的内容。我的问题是,当有人存活的秒数发生变化时,显示存活时间的工具提示不会更新。当您第一次将鼠标悬停在员工上方时,它可以正常工作,但此后它将永远保留该值。我可以实现INotifyPropertyChanged来解决这个问题,但每当SecondsAlive更改时为每个员工都执行此操作似乎有点过度设计。如果列表中有400名员工,那么我必须引发400个事件,即使用户可能永远不再查看另一个工具提示。我希望能够让工具提示在每次显示时请求SecondsAlive属性。是否可能做到这一点?
请注意,这只是一个示例,我不需要知道我的员工已经存活了多少秒 :-) 但我的问题是,仅为一个可能永远没有人看的工具提示而引发400次事件。