0

アプリでピボット コントロールを使用しています。各ピボット アイテムのコンテンツをリモート URL から (つまり、Web サービスを使用して) ロードしたいと考えています。

例 - レシピの詳細なピボット ページがあります。3 つのピボット アイテム (情報、レビュー、ギャラリー) があり、システム トレイに進行状況インジケーターがあります。

各ピボット アイテムのデータを 1 回ロードしたい。つまり、ユーザーが以前にロードされたピボット アイテムにスワイプした場合、そのピボット アイテムに対して再度 Web リクエストを行うべきではなく、その場合、プログレス インジケーターは非表示にする必要があります。

ピボット アイテムごとに異なる ViewModel を使用するか、すべてに対して単一の MainViewModel を使用する必要がありますか?

Pivot ページでプログレス インジケータの可視性を管理するにはどうすればよいですか?

ピボット項目ごとに UserControl を作成する必要がありますか?

4

1 に答える 1

0

ページの役割は、1 つの「エンティティ」であるレシピのデータを表示することです。このため、RecipeViewModel を 1 つだけ使用し、Pivo​​t 項目の 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 を使用します (例: レシピのリスト、連絡先情報、1 つのピボットについて)。

于 2014-07-27T16:18:27.490 に答える