locked
页面刷新问题 RRS feed

  • 问题

  • 我用的ObservableCollection集合, 在当this.NavigationCacheMode = NavigationCacheMode.Enabled时,删除时UI可以及时更新,但是添加时,因为是跳转页面,返回时,增加的新数据集合,在UI上却无法及时更新,必须重新进入这个页面,UI才会更新。

    在当  this.NavigationCacheMode = NavigationCacheMode.Disabled;时,增加的UI会及时出现。但是 我进去其他页面时(并没有任何操作)返回是直接刷新页面 ,不会记录缓存。 

    很是纠结,请问怎么做this.NavigationCacheMode = NavigationCacheMode.Enabled时,可以刷新页面,增加的数据在UI上可以及时更新。 并且可以记录缓存?

    在msdn上 有一个跟我差不多的问题:https://social.msdn.microsoft.com/Forums/zh-CN/00495d4d-59d4-412d-b06a-6ae475bad24d/semanticzoomui?forum=wpappszh

    但是其中的 答案中 有“主视图里列表对应的数据集合也要实现ObservableCollection集合。“这句话 不是狠明白

    2016年5月12日 14:45

答案

  • 我一开始是 创建一个类(Food). 之后再A页面创建ObservableCollection<Food>.之后在经行相关操作。所以只能显示删除这样的操作,增加却没有及时显示。并且是 A页面的显示 是 必须读取本地信息之后才会显示的。

    现在 我直接在类中(Food)中创建

    public  static ObservableCollection<Food>Get= newObservableCollection<Food>(); 

    在经行相关操作。

    A页面设置ItemsSource=Food.Get;而且A页面保留读取本地信息的代码块。

    B页面 保存好信息之后 ,因为现在的类(Food)是公共的,不再是限定A页面使用。所以B页面同样使用。使用 Food.Get.Insert属性 直接将Item插入。

    这就可以显示 增加或者删除了。

    我先是复习了C#的OOP技术,重新看了怎么创建类。书《C# 入门经典》 第六章 函数 122页中一句话 “可以被看做全局成员”。这句话给了我很大的灵感的。

    之后并且在网上找到了 与我差不多的案例 wpf 窗口刷新问题 中 有人也给了案例代码。 

    必须得找时间重新看看《C# 入门经典》了 可以说 问题的答案都可以在其中找到。真是书到用时方嫌少。

    2016年5月17日 4:35

全部回复

  • 您好,

    可以提供一下您的代码吗?这样方便快速的定位和解决问题。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年5月13日 2:31
    版主
  • 代码?

    A B两个页面。 在B页面用创建数据并保存到本地。在A页面读取B页保存到本地的数据用ObservableCollection加载(删除的时候 不用刷新 直接就可以显示) 

    现在的问题就是 this.NavigationCacheMode = NavigationCacheMode.Enabled; 无法自动显示更新的UI。

    有没有自动刷新的东西。或者方法。刷新listbox 或者刷新页面的方法

    2016年5月13日 13:59
  • 您好 ARM830,

    您可以在A页面的OnNavigatedTo事件处理程序中更新数据源(你的ObservableCollection),这件UI就会自动更新。

    protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);  
                // 更新数据源
            }

    Best Regards,

    Xavier Eoro


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年5月14日 7:15
    版主
  • 不行啊。依旧会是不刷新。我在A面 base.OnNavigatedTo(e); 依旧没有起色 必须是重新进入此页面才会刷新的。 

    2016年5月15日 13:05
  • 不行啊。依旧会是不刷新。我在A面 base.OnNavigatedTo(e); 依旧没有起色 必须是重新进入此页面才会刷新的。 


    所以我上面说你最好把可以重现你问题的代码上传到OneDrive上,这样我可以直观的知道你的问题在哪里,因为我这边根据你的描述所创建的代码不可能跟你的一致。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年5月16日 1:39
    版主
  • 我一开始是 创建一个类(Food). 之后再A页面创建ObservableCollection<Food>.之后在经行相关操作。所以只能显示删除这样的操作,增加却没有及时显示。并且是 A页面的显示 是 必须读取本地信息之后才会显示的。

    现在 我直接在类中(Food)中创建

    public  static ObservableCollection<Food>Get= newObservableCollection<Food>(); 

    在经行相关操作。

    A页面设置ItemsSource=Food.Get;而且A页面保留读取本地信息的代码块。

    B页面 保存好信息之后 ,因为现在的类(Food)是公共的,不再是限定A页面使用。所以B页面同样使用。使用 Food.Get.Insert属性 直接将Item插入。

    这就可以显示 增加或者删除了。

    我先是复习了C#的OOP技术,重新看了怎么创建类。书《C# 入门经典》 第六章 函数 122页中一句话 “可以被看做全局成员”。这句话给了我很大的灵感的。

    之后并且在网上找到了 与我差不多的案例 wpf 窗口刷新问题 中 有人也给了案例代码。 

    必须得找时间重新看看《C# 入门经典》了 可以说 问题的答案都可以在其中找到。真是书到用时方嫌少。

    2016年5月17日 4:35