0

我正在制作全景 Windows Phone 8 应用程序。这是我第一次在应用程序中实际使用一个。

我在运行时显示数据时遇到问题。相反,我只看到一个列表:

RuntimeOne RuntimeTwo RuntimeThree 等..

我不知道发生了什么,前几天它起作用了。我将进入 SampleData 文件夹并更改 LineOne、LineTwo、LineThree 等,但是当我将应用程序部署到 Windows Phone 模拟器时它没有做任何事情。

4

1 回答 1

1

发生的事情是有两组不同的数据,并且DataContext运行时与设计时不同。

  1. 您在设计模式中看到的数据(“设计一”、“设计二”)存储在 中MainViewModelSampleData.cs,因此更改它不会影响运行时体验。

  2. 运行时的数据来自LoadDataMainViewModel.cs

在顶部MainPage.xaml,您会看到

      d:DataContext="{d:DesignData SampleData/MainViewModelSampleData.xaml}"

这里的“d”命名空间是“设计”的助记符。如果您查看示例数据 XAML 文件,您会注意到它声明了一个MainViewModel使用Items.

在运行时,MainViewModel.cs(特别是LoadData方法)将项目一一添加到类的Items属性中MainViewModel,而该类又在构造函数中设置为运行时 DataContextMainPage

全景控件本身具有如下标记

            <phone:LongListSelector Margin="0,0,-22,0" ItemsSource="{Binding Items}">

因此,无论当前的 DataContext 是什么,它都希望看到一个调用的集合Items,而两个不同的数据上下文正在发挥作用的事实解释了您所看到的。

数据绑定魔法非常酷且强大,但有时确实让您摸不着头脑。

于 2013-05-04T21:43:22.153 回答