0

私は、実際にはMainWindow.xamlであるラッパーUIを含むWPFアプリケーションで作業しており、ユーザーがアプリケーションの別のセクションに移動することを選択するたびに、その中のコンテンツ(ContentPresenter)が変更されます。

ユーザーがメインコンテンツに戻ったときに、アプリケーションが毎回初期化するのではなく、何らかの方法でメモリに保存し、ユーザーが[ホーム]ボタンをクリックしたときに復元するようにします。

現在の状態では、「ホーム」セクションに戻ると、ホームビューが何度も初期化されるため、アプリケーションの速度が少し遅くなります。私の質問はこれです:私がそれを速く復元することができるように、どういうわけかそのユーザーコントロールをメモリに保存する方法はありますか?

ありがとう!

4

2 に答える 2

1

@Mattが提案したように、非表示はもちろんオプションです。もう1つの方法は、フレームワークのすばらしい世界を探索することです(Prism、Caliburn、Caliburn.Micro、...)

これらは、WPFアプリケーションの管理に大きな支援を提供します。

基本的に、ロードされたビューモデルを追跡するmainviewmodelまたはmainviewのコレクションであるViewModelへの参照を保持する必要があります。

于 2012-03-28T13:54:55.293 に答える
0

最終的に、に移動しContentControlItemsControl、アクティブなものを除くすべてのコンテンツコントロールを非表示にすることにしました。

これが私のコードの抜粋です:

<ItemsControl ItemsSource="{Binding ViewModels}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentControl Visibility="{Binding Visibility}" Content="{Binding ViewModel}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

私のViewModelには、実際のコンテンツと、コンテンツが現在のものではない場合と現在のものである場合にVisibility設定される別のプロパティがあります。falsetrue

すべてのヘルパーに感謝します!

于 2012-03-28T16:12:54.290 に答える