我在这里有严重的精神障碍,需要一些帮助。我使用 Windows Phone 数据绑定应用程序作为我项目的起点,并且对模型、视图模型和视图的交互方式相当满意。
我的问题是示例中使用的数据是在运行时创建并添加到 ObservableCollection 对象中的。我的理解是,创建新的 ItemViewModel 对象以及随后将它们添加到 ObservableCollection 会触发与 NotifyPropertyChanged 事件等效的事件,从而确保视图上的绑定全部刷新。如果我的解释不正确,那么我会欢迎任何想法。
现在,在大多数实际示例中,数据的运行时生成是无用的,因此我需要将数据序列化到隔离存储。这我已经完成并且可以成功保存和加载我的 ObservableCollection 对象。
当我从 IsolatedStorage 加载数据然后将返回的 ObservableCollection 分配给视图模型中的 Items 对象时,我的问题就出现了。
public void LoadData()
{
App.Measurements = Serialization.Read<measurements>(App.MEASUREMENTS);
this.IsDataLoaded = true;
}
App.MEASUREMENTS 只是一个全局变量,其中包含要在 IsolatedStorage 中使用的文件名。
上面的代码检索数据并将其分配给 Items ObservableCollection,但 UI 未更新。如果我将上面的代码替换为:
public void LoadData()
{
foreach (measurement m in App.Measurements.WeightMeasurements)
{
this.Items.Add(m);
}
this.IsDataLoaded = true;
}
并遍历检索到的集合并将新的 ItemViewModel 集合添加到 Items 集合,然后 UI 上的所有内容都会正确更新。
我的 xaml 具有正确的绑定,并且 DataContext 也设置正确。
我已经尝试过无数种方法来解决这个问题,但我无法相信唯一的方法是遍历整个加载的集合,将其添加到 Items 集合中,只是一些事件会触发!
任何想法最受欢迎。
杰森。