我的应用程序有一个后台线程,它定期以键/值对的形式从外部源检索数据。我想公开这些数据以进行绑定,大概是通过将它们存储在某种静态(?)模型中,因为我的应用程序中的许多视图都需要这些数据。可能有数百个这样的键,并且每个客户可能不同,所以我不能简单地创建一个 INotifyPropertyChanged 模型,其中每个值都有一个属性。
该应用程序在任何时候都有多个可见的视图,每个视图都有许多控件(通常是文本框),我想将它们绑定到上述集合中的各个项目。当集合中的值更新时,任何绑定到该项目的控件都应该更改以反映新值。我假设ObservableCollection
这里不适合,因为对单个项目的更改将导致所有控件更新,无论它们绑定到哪个项目?
为了使组合更加复杂,某些值(数字)将需要格式化以进行显示,例如小数位数,或添加诸如“伏特”之类的后缀。格式化规则是用户定义的,所以我不能将它们硬编码到(比如说)XAML 绑定的StringFormat
表达式中。理想情况下,我应该能够访问原始值(例如用于计算)和格式化版本(用于显示目的)。我敢肯定,使用一些巧妙的 WPF 功能一定可以实现后者!
我将不胜感激有关如何解决这些要求的任何指示。
编辑:值得一提的是,我之前曾尝试将模型实现为某种集合。问题是它最初不会填充所有值,并且这些只是在一段时间后才添加。当它们最终被添加时,绑定控件不会更新 - 大概是因为它最初无法绑定到缺失值。