2012-03-28 3 views
0

실제로 MainWindow.xaml 인 래퍼 UI가 포함 된 WPF 응용 프로그램에서 작업하고 있으며 그 안에있는 내용 (ContentPresenter)은 매번 변경됩니다. 사용자는 응용 프로그램의 다른 섹션으로 이동합니다.매번 초기화되지 않는 WPF의 정적 뷰 만들기

사용자가 메인 콘텐츠로 돌아올 때마다 응용 프로그램이 매번 초기화하지 않고 메모리에 보존하고 사용자가 "홈"버튼을 클릭 할 때 복원하기를 원합니다.

현재 상태에서 "집"섹션으로 다시 이동할 때 홈보기가 반복적으로 초기화되어 응용 프로그램이 다소 느려집니다. 내 질문은 이것입니다 : 어떻게 든 그것을 빨리 복원 할 수 있도록 메모리에 사용자 정의 컨트롤을 보존 할 수있는 방법이 있나요?

감사합니다.

+1

당신이하려고하는 것을 정확히 따라하기가 어렵지 만, "집"콘텐츠를 별도의 컨트롤에두고 그냥 숨길 수는 없습니까? –

+0

사용자가 누르는 버튼에 따라 교체되는 내용은 실제로 MainWindow.xaml의 'ContentPresenter'에 바인딩됩니다. 사용자가 다른 워크 플로 버튼을 클릭하면 내용이 사용자가 클릭 한 것으로 바뀌고, 사용자가 '홈'화면으로 돌아갈 때마다 '홈'콘텐츠를 숨기고 폐기하지 않기를 바랍니다. 바인딩을 사용하고 있다면 그것을 어떻게 처리하지 않고 숨길 수 있습니까? –

+0

UserControl을 전용 변수에 저장할 수는 없습니까? – Paparazzi

답변

0

결국 ContentControlItemsControl으로 이동 한 다음 활성 콘텐츠 컨트롤을 제외한 모든 콘텐츠 컨트롤을 숨기기로 결정했습니다. 내가 실제 내용과 내용이 현재와 true가있는 경우가 아닌 경우 false로 설정되어 다른 Visibility 속성이 내 뷰 모델에서

<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> 

:

은 여기 내 코드의 조각입니다.

모든 도우미 덕분에!

+0

위에서 설명한 것처럼이 해결 방법으로이 문제를 해결했습니다. 모든 도우미 덕분에! :) –

1

은닉은 @Matt가 추천 한대로 옵션입니다. 다른 방법은 탐색기 프레임 워크 (프리즘, Caliburn, Caliburn.Micro, ...)의 멋진 세계입니다.

이러한 WPF 응용 프로그램 관리에 큰 도움을 제공합니다.

기본적으로로드 된 뷰 모델을 추적하는 mainviewmodel 또는 mainview의 컬렉션 인 ViewModel에 대한 참조를 유지해야합니다.

관련 문제