WP7如何刷新单独的Pivot项目?

时间:2011-09-30 06:55:08

标签: windows-phone-7 pivot

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

我动态创建5个透视项目。我想将每个项目分开刷新。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

然后你只需要独立刷新属性或视图模型,这就是在数据透视控件上用于提高性能的模式数据页(以及延迟加载数据以加速显示数据透视控件页面)

最值得记住的是,您没有刷新枢轴页面,而是显示在其上的数据。

如果你想动态控制有多少个透视项目,那么你必须以编程方式控制它。

答案 2 :(得分:0)

我正在使用下一种方法:每个PivotItem都是一个单独的UserControl,它继承自BaseUserControl。 BaseUserControl有两个抽象方法: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)内部,我可以定义我想在这些事件中做什么。