我正在制作全景 Windows Phone 8 应用程序。这是我第一次在应用程序中实际使用一个。
我在运行时显示数据时遇到问题。相反,我只看到一个列表:
RuntimeOne RuntimeTwo RuntimeThree 等..
我不知道发生了什么,前几天它起作用了。我将进入 SampleData 文件夹并更改 LineOne、LineTwo、LineThree 等,但是当我将应用程序部署到 Windows Phone 模拟器时它没有做任何事情。
我正在制作全景 Windows Phone 8 应用程序。这是我第一次在应用程序中实际使用一个。
我在运行时显示数据时遇到问题。相反,我只看到一个列表:
RuntimeOne RuntimeTwo RuntimeThree 等..
我不知道发生了什么,前几天它起作用了。我将进入 SampleData 文件夹并更改 LineOne、LineTwo、LineThree 等,但是当我将应用程序部署到 Windows Phone 模拟器时它没有做任何事情。
发生的事情是有两组不同的数据,并且DataContext
运行时与设计时不同。
您在设计模式中看到的数据(“设计一”、“设计二”)存储在 中MainViewModelSampleData.cs
,因此更改它不会影响运行时体验。
运行时的数据来自LoadData
于
MainViewModel.cs
在顶部MainPage.xaml
,您会看到
d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"
这里的“d”命名空间是“设计”的助记符。如果您查看示例数据 XAML 文件,您会注意到它声明了一个MainViewModel
使用Items
.
在运行时,MainViewModel.cs
(特别是LoadData
方法)将项目一一添加到类的Items
属性中MainViewModel
,而该类又在构造函数中设置为运行时 DataContext
MainPage
全景控件本身具有如下标记
<phone:LongListSelector Margin="0,0,-22,0" ItemsSource="{Binding Items}">
因此,无论当前的 DataContext 是什么,它都希望看到一个调用的集合Items
,而两个不同的数据上下文正在发挥作用的事实解释了您所看到的。
数据绑定魔法非常酷且强大,但有时确实让您摸不着头脑。