假设我有一个代表工作人员的简单类
class Staff
{
public string FirstName { get; set; }
public string FamilyName { get; set; }
public int SecondsAlive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个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>
Run Code Online (Sandbox Code Playgroud)
然后我在ListBox中显示了一大堆人员
myListBox.ItemsSource = GetAllStaff();
Run Code Online (Sandbox Code Playgroud)
很标准的东西.我遇到的问题是显示某人活着的秒数的工具提示没有得到更新.当你第一次将鼠标悬停在一名工作人员身上时,它可以正常工作,但从那时起它就永远保持这个价值.我可以实现INotifyPropertyChanged来解决这个问题,但是每当SecondsAlive发生变化时,每个工作人员都可以做到这一点.假设我在列表中有400名员工,那么我必须筹集400个事件,即使用户可能永远不会查看另一个工具提示.我想要的是使工具提示请求显示SecondsAlive属性.那可能吗?
请注意,这只是一个例子,我不需要知道我的员工活了多少秒:-)但我有同样的问题,我需要提高一个甚至大约400次只是为了一个工具提示,有人可能不会看.