我的windows 10 IOT核心应用程序使用SPI收集许多实体。有一些很好的例子可以启动计时器来获取SPI数据、更新数据以及将UI元素绑定到这些数据。结果是,只要SPI获得了有关更改实体的一些数据,驱动UI的数据就会更新,并且绑定到该数据的任何UI元素都会更新。我甚至可以通过使用双向绑定来跟踪列表中所选项目,来更改此页面上显示的数据子集。
就像许多例子一样,我的代码结构如下:
public async void Init_SPI()
{
....
periodicTimer = new Timer(this.TimerCallback, null, 0, 10);
} // public async void Init_SPI()
private void TimerCallback(object state)
{
/* UI updates must be invoked on the UI thread */
var task =
this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{ ... update states of data that many be bound to UI element
我的问题:
我不知道如何根据上面的内容更新多个页面的数据,因为this.variable指的是启动计时器的页面的UI线程。
如果更新一个静态类并让多个页面持续轮询该静态数据以使UI跟踪这些大量元素,效率会太低。
我目前唯一的想法是将所有XAML页面编码在一个页面中,并在这些"虚拟"页面之间添加选项卡。我宁愿有多个页面来保持这些页面的功能分离。
任何关于如何从SPI端口上读取的数据更新多个页面的建议都将不胜感激。
谨致问候,John
很抱歉很晚才给出答案,但我的解决方案是仍然创建"真实"页面,但只将数据"中继"到当前可见的页面。因此,每当一个页面变得可见时,我都会在{ ... update states of data [...]
上面制作代码片段的内部,以指出该页面。这可以通过一个简单的switch
语句来实现,或者通过一个带有HandleSpiData(TheSpiData)
方法的简单接口来实现,甚至可以使用一个简单Action<YourSpiData>
。