我的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端口上读取的数据更新多个页面的建议都将不胜感激。
向您致敬,约翰
发布于 2016-11-22 02:58:43
很抱歉回答得太晚了,但我的解决方案是仍然创建“真正的”页面--但只将数据“中继”到当前可见的页面。因此,每当页面变得可见时,我都会将代码片段的内部部分放在{ ... update states of data [...]之上,以指出该页面。这可以通过一个简单的switch语句来实现,或者通过一个带有HandleSpiData(TheSpiData)方法的简单接口来实现--甚至是一个简单的Action<YourSpiData>。
https://stackoverflow.com/questions/36539861
复制相似问题