0

我在我的应用程序中使用 Pivot Control。我想通过远程 url 加载每个数据透视项目的内容(即使用 Web 服务)。

例如 - 我有一个详细的食谱数据透视页面。它有 3 个枢轴项目 - 信息、评论、画廊。系统托盘上有进度指示器。

我想加载每个数据透视项目的数据一次,即如果用户滑回先前加载的数据透视项目,那么它不应该再次对该数据透视项目发出 Web 请求,并且在这种情况下进度指示器应该是不可见的。

我应该为每个数据透视项目使用不同的 ViewModel 还是为所有项目使用单个 MainViewModel?

如何管理 Pivot 页面中进度指示器的可见性?

我应该为每个 Pivot 项目创建 UserControl 吗?

4

1 回答 1

0

页面的作用是显示一个“实体”的数据,即配方。因此,我将只使用一个 RecipeViewModel 并且不会费心为 Pivot 项创建用户控件。

您可以使用绑定来管理 ProgressIndicator。我个人使用从 PhoneApplicationPage 继承的 BasePage,我在后面的代码中创建绑定,例如:

if (SystemTray.ProgressIndicator == null)
{
    var indicator = new ProgressIndicator { IsIndeterminate = true };
    var visibilityBinding = new Binding("ProgressBarIsActive");
    BindingOperations.SetBinding(indicator, ProgressIndicator.IsVisibleProperty, visibilityBinding);        
    SystemTray.SetProgressIndicator(this, indicator);

}

有了这个,您只需要切换 ViewModel 上的 ProgressBarIsActive 属性。

只有当枢轴项目是独立的(例如:食谱列表、联系信息、关于在一个枢轴中)时,我才会对枢轴项目使用不同的 ViewModel。

于 2014-07-27T16:18:27.490 回答