2

私のMainPage.xamlは、3つのPivotItemを持つピボットページです。現在、MainPageコンストラクターの各PivotItemに必要なものをすべてロードしています。不要なものがたくさん読み込まれるので、これは悪いことです。

ここここを読むと、最初のPivotItemのみをロードし、ロード後に残りのアイテムをロードすることがわかります。具体的には :

起動時にすべてをロードするのではなく、ピボットコントロールコンテンツをオンデマンドでロードすることにより、ピボットアプリケーションのパフォーマンスを向上させます。1つの解決策は、各PivotItemコントロールからコンテンツを取得し、UserControlsに変換することです。その後、ルートピボットコントロールでLoadingPivotItemイベントをサブスクライブできます。次に、イベントハンドラーで、適切なUserControlをインスタンス化し、それをPivotItemコンテンツとして設定します。

私が提案に従う場合:

private void OnLoadingPivotItem(object sender, PivotItemEventArgs e)
{
if (e.Item.Content != null)
{
    // Content loaded already
    return;
}

Pivot pivot = (Pivot)sender;

if (e.Item == pivot.Items[0])
{
    e.Item.Content = new Page1Control();
}
else if (e.Item == pivot.Items[1])
{
    e.Item.Content = new Page2Control();
}
else if (e.Item == pivot.Items[2])
{
    e.Item.Content = new Page3Control();
}
}

createクラスPageXControlを使用する必要がありますか?メインページクラスからなんとか継承する必要がありますか?

各PivotItemコントロールからコンテンツを取得してUserControlsに変換するにはどうすればよいですか?

ありがとう

4

2 に答える 2

10

PivotItemsのコンテンツをUserControlsに抽出することは、実際には非常に簡単です。まず、Pivo​​tItemごとに新しいUserControlを作成します。次に、Pivo​​tItemのコンテンツをPivotItemからUserControlsに移動します。OnLoadingPivotItem次に、指定したメソッドでコントロールを作成します。これを行う方法を示すために、GitHubに小さなプロジェクトを作成しました。参照:https ://github.com/ErikSchierboom/pivotcontentdemo

ご覧のとおり、UserControlsは意味的に同じであるため、基本クラスから派生させました。ただし、これは必ずしも必要ではありません。UserControlから継承するだけで問題ありません。

PivotItem自体がカスタムコントロールに抽出されるアプローチよりも、このアプローチの方が好きです。

于 2012-12-12T10:33:00.743 に答える
6

PivotItemから継承する独自のPivotアイテムを作成できます。VSのデフォルトのPivotプロジェクトに基づいて、2つのPivotアイテムを独自のクラスに分割するサンプルをまとめました:-

http://www.smartmobiledevice.co.uk/projects/PivotItemUserControlSample.zip

于 2012-04-29T14:55:41.273 に答える