Windows Phone 8:如何使用MVVM加载每个pivot项目的内容

本文关键字:pivot 项目 加载 Phone MVVM 何使用 Windows | 更新日期: 2023-09-27 18:14:59

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

例如-我有一个食谱的详细Pivot页面。它有3个支点项目-信息,评论,画廊。它在系统托盘上有进度指示器。

我想加载每个pivot项目的数据一次,即如果用户滑动回以前加载的pivot项目,那么它不应该再次为该pivot项目和进度指示器在这种情况下不可见的web请求。

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

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

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

Windows Phone 8:如何使用MVVM加载每个pivot项目的内容

page的作用是显示一个"实体",即配方的数据。因此,我将只使用一个RecipeViewModel,也不会为Pivot项创建UserControls。

您可以使用绑定来管理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透视项目只有当透视项目是独立的(例如:食谱列表,联系信息,大约在一个透视)。