0

한 페이지에서 다른 페이지로 많은 데이터 집합을 전달해야합니다. 내가 아는 한 두 가지 선택 사항이 있습니다. PhoneApplicationService 및 IsolatedStorageSettings.PhoneApplicationService.Current.State와 IsolatedStorageSettings windows phone

PhoneApplicationService는 페이지간에 전달 될 때 많은 지연을 생성합니다. 따라서 IsolatedStorageSettings를 사용했지만 IsolatedStorageSettings에서 항목을 제거하는 동안 비정상적인 개체 생성이 발생했습니다.

큰 복잡한 개체를 다루는 것이 가장 좋습니다.

IsolatedStorageSettings에서 항목을 제거하는 중에 실제로 어떤 일이 발생합니까?

감사

편집

: 나는 분명 나하는 IsolatedStorageSettings에서 항목을 제거, 이미 저장된 키에 대한 새로운 객체가 생성 는 경우.

샘플 코드 :

   if (IsolatedStorageSettings.ApplicationSettings.Remove("FormFields")) 
       { 
        IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);      
       } 
       else 
       { 
        IsolatedStorageSettings.ApplicationSettings.Add("FormFields", app.response);      
       } 
+1

그래서'IsolatedStorage'를 사용하면 (묵시적으로) 저장소에 데이터를 씁니다. 즉, 데이터는 본질적으로 "영구적"이며 디스크에 기록되므로 디스크 쓰기 지연이 발생합니다. 당신이 정말로 찾고있는 것은'ServiceLocator'와 결합 된'ViewModel'입니다. 이 패턴을 사용하면 뷰에 필요한 데이터를 저장하는 (기본적으로) 특정 클래스 (ViewModel)의 싱글 톤을 저장하는 한 곳을 가질 수 있습니다. MvvmLight를 체크 아웃해야한다. WPv와 WP8을 모두 포함하고 있기 때문에'ViewModel'과'ServiceLocator'를 구현하는 것이 매우 쉽다. –

+0

감사합니다. 예, 당신이 말하는 것은 옳습니다. ViewModels를 유지하기 위해 이미 구현했습니다. 이제는 다른 메서드로 다시 전환해야합니다. 그러나 한 페이지에서 다른 페이지로 전달하는 가장 좋은 방법은 찾고있는 중입니다. –

+0

그러면 키가 ServiceLocator가됩니다. 이를 통해 ViewModelLocator.MyPageVM과 같은 것을 쉽게 말할 수 있습니다. 그렇다면 페이지 사이에 참조를 전달할 필요가 없습니다. 그들은 단지 그것들을 정적으로 검색 할 수 있습니다. –

답변

0

왜 그냥 응용 프로그램 클래스를 사용하지 않는?

public partial class App : Application 
{ 
    public YourDataObject ApplicationDataObject { get; set; } 
} 

다음 페이지로 점프하기 전에 값을 설정 예를 들어, 모든 페이지에서 사용할 수 있습니다 : 당신은 오른쪽 페이지에 한 번

(Application.Current as App).ApplicationDataObject = new YourDataObject(); 

그리고 값을 검색 :

YourDataObject yourData = (Application.Current as App).ApplicationDataObject; 

그것은 아름답지는 않지만 아주 간단하며 아마도 당신의 경우에 가장 좋은 해결책입니다.

+0

State 및 IsolatedStorage와 비교할 때 빠르고 간단합니까? 나는 최선의 최적화 된 방법이 필요하다. 감사합니다. –

+0

@PradeepAJ 전역 변수에 값을 할당하는 것만 큼 빠르고 간단합니다. 이 경우 전역 변수는 ApplicationDataObject가됩니다. 일단 값을 필요로하지 않으면 널값을 설정할 수 있고 GC는 메모리를 해제해야합니다. – Gooseman

+0

예, 이것이 현재 구현할 때 가장 좋은 방법입니다. 감사 –