【问题标题】:WP7 How to refresh separate Pivot Item?WP7 如何刷新单独的 Pivot Item?
【发布时间】:2011-09-30 06:55:07
【问题描述】:

在 wp7 中我想刷新单独的枢轴项?这可能吗?

我正在动态创建 5 个枢轴项。我想单独刷新每个项目。

【问题讨论】:

    标签: windows-phone-7 pivot


    【解决方案1】:

    在 WP7 中没有刷新或重绘的概念。 Silverlight 使用保留模式图形,其中保留和管理各种 UI 元素。

    当您想要“刷新”您的 UI 时,您只需更改 UI 元素的属性即可。框架负责在屏幕上反映这种变化。

    【讨论】:

    • 嘿,你的 UI 元素的属性是什么?请你能简单解释一下...对不起,我是这个平台的新手。
    【解决方案2】:

    一个好的解决方案是将每个数据透视项中的内容数据绑定到单独的视图模型(如果该页面上有许多数据项)或可控的可观察属性(列表框)

    然后您只需要独立刷新属性或视图模型,这就是在枢轴控件上为提高性能(并延迟加载数据以加快枢轴控件页面的显示速度)上的模式数据页面所做的事情

    最好记住的是,您刷新的不是数据透视页面,而是其上显示的数据。

    如果您想动态控制有多少枢轴项,则必须以编程方式控制。

    【讨论】:

    • 我想动态添加 5 个数据透视项目。我正在创建按钮,如果我单击按钮重新加载所有数据透视项目代码 NavigationService.Navigate(new Uri(NavigationService.Source + "?Refresh=true", UriKind.Relative));我想要重新加载单独的数据透视项目的代码
    • @Darkside 我正在使用您的解决方案。但我看到枢轴只更新屏幕上的内容!
    【解决方案3】:

    我正在使用下一种方法:每个 PivotItem 都是一个单独的 UserControl,它继承自 BaseUserControl。 BaseUserControl 有 2 个抽象方法:OnPivotItemLoaded 和 OnSelected。

    默认情况下,PivotItems 是空的(或者它们可以在运行时创建,就像您的情况一样)。 然后,当 Pivot 的项目被加载(只需订阅它的事件)时,我正在调用

    private void PivotItemProfile_OnLoaded(object _sender, RoutedEventArgs _e)
        {
            SimpleLogger.WriteLine("Creating ProfileUserControl");
            var pivotItem = _sender as PivotItem;
            if (pivotItem == null) return;
    
            if (pivotItem.Content == null)
                pivotItem.Content = new ProfileUserControl();
    
            var item = (pivotItem.Content as BaseUserControl);
            if (item != null)
                item.OnPivotItemLoaded();
        }
    

    然后,我也订阅了 Pivot 的 OnSelectionChanged 事件:

    private void PivotControl_OnSelectionChanged(object _sender, SelectionChangedEventArgs _e)
        {
            var pivotItem = MainPivot.SelectedItem as PivotItem;
            if (pivotItem == null) return;
    
            var item = (pivotItem.Content as BaseUserControl);
            if (item != null)
                item.OnPivotItemSelected();
        }
    

    所以,在 PivotItem (UserControl) 内部,我可以定义我想在这些事件中做什么。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 2011-05-11
      • 1970-01-01
      • 2017-11-10
      • 2013-05-23
      相关资源
      最近更新 更多