2016-04-26 25 views
3

用メモリにMVVMのDataTemplate負荷私はRadioButtonRadioButtonContentControlContentプロパティを設定するのModelViewにコマンドを送信に基づいてContentControlにロードされているいくつかの異なるDataTemplateを持つウィンドウを持っていWPF - 再利用

それはうまく動作しますが、今いくつかのビューは、これらのビューのいずれかに切り替える「重い」オブジェクト(Eyeshot CAD viewer)。

が含まれているこの瞬間に、ビュー以外のソフトウェア全体で絶対にゼロロジックがあります(遅延が発生します/ビューモデル)

ビューと重いコントロールを一度メモリにロードしてから、ビューに切り替えるときに再利用する方法はありますか?あなたが設定することができ、あなたのDataTemplateで

<DockPanel> 

    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Height="160" Margin="0,0,0,12"> 
     ... Removed for clarity 
    </StackPanel> 

    <ContentControl x:Name="Tabs" Content="{Binding SelectedTabViewModel}" Margin="0,12,0,12"/> 
</DockPanel> 
+0

私は[この質問](http://stackoverflow.com/q/30033162/1997232)の複製として投票しますが、私は自分で答えを得ることはできません。私が現在行っていることは、ビューを切り替える前に(待機中にアニメーションを表示してユーザーを楽しませることができる)、最初のレンダリング(別の 'ContentControl'で発生)を待つことです:' Dispatcher.InvokeAsync(()=> ...、DispatcherPriority .Render); '(ここで' ... 'は最初のものを2番目の' ContentControl'に置き換える部分です)。 – Sinatr

答えて

0

(そのビューのViewModelは現在、シングルトンであるが、それは解決しない)属性X:共有=「True」を、このフレームワークは、視覚的に再利用できるようになります別のContentPresenterのための(データ・テンプレート内の)制御。

これは開始時にコンポーネントをロードしませんが、一度インスタンス化すると再利用します。