2012-04-06 6 views
3

모두, Windows 7 Phone을 처음 사용합니다. 내 상황은 내가 ScrollViewer을 포함하는 메인 페이지를 가지고 있으며, 차례로 StackPanel이 있습니다. 이 StackPanel에 Image Thumb 네일 하이퍼 링크와 이미지에 대한 기본 정보를 보유 할 복수 서브 - StackPanel (런타임)을 채우고 싶습니다.Windows Phone에서 여러 페이지에서 컨트롤 업데이트

기본 페이지에서이 작업을 수행 할 때이 방법이 유용하지만 메인 페이지에있는이 컨트롤을 업데이트하는 방법을 알고 싶지만 기본 페이지 이외의 다른 페이지에서는이를 알고 싶습니다. 나는 다른 페이지에서 페이지의 컨트롤 (위에서 설명한 것처럼)을 업데이트하는 가장 좋은 방법이 무엇인지 알고 싶습니다.

은 분명히 여러 가지 방법으로 페이지

PhoneApplicationService.Current.State["yourparam"] = param 
NavigationService.Navigate(new Uri("/view/Page.xaml", UriKind.Relative)); 

간에 데이터를 전달할 수있다 다음 다른 페이지 단순히

var k = PhoneApplicationService.Current.State["yourparam"]; 

및 많은 다른 사람이다. 그러나 다른 페이지의 일반 컨트롤을 업데이트하는 가장 좋은 방법은 무엇입니까?

참고 : 데이터 액세스 및 페이지 간 전달에 관해 많은 질문이 있습니다. How to pass the image value in one xaml page to another xaml page in windows phone 7?

  • Passing image from one page to another windows phone 7
  • Passing data from page to page

    1. . 이것은 내가 요구하는 것이 아닙니다.

  • 답변

    3

    질문을 올바르게 이해하면 예를 들어 Page2.xaml과 같은 다른 페이지의 MainPage.xaml에있는 컨트롤을 업데이트하려고합니다.

    내가 아는 한, 다른 페이지에서 페이지 컨트롤에 도달 할 수있는 방법이 없으며, 내가 생각할 수있는 경우에는 불필요한 것처럼 보입니다.

    시도하는 것을 달성하는 데 사용되는 방법은 일반적으로 버튼을 누르는 것과 같은 동작을 트리거하고 컨트롤을 업데이트하려는 페이지에 매개 변수를 전달하여 수행됩니다. 그리고 해당 페이지의 onnavigatedto 이벤트 (또는 MVVM 패턴을 사용하는 경우 viewmodel 생성자)에서 전달 된 매개 변수를 기반으로 컨트롤을 업데이트하십시오.

    업데이트가 데이터를 기반으로하는 경우 관측 가능한 컬렉션 또는 INotifyPropertyChanged (기본적으로 속성 중 하나가 ui로 변경되었음을 알릴 수있는 모든 개체)를 확장하는 개체를 바인딩하고 데이터 기반을 변경하는 것이 가장 좋습니다. 전달 된 매개 변수에.

    이 두 페이지가 어떻게 든 보이고 동시에 탐색 할 필요가없는 경우 (예 : 팝업 또는 슬라이딩 메뉴 종류의 UI) 팝업에 표시되는 페이지를 usercontrol, 이것으로 부모의 통제 장치에 도달하십시오. 부모님.

    앱의 흐름에 대해 자세히 설명해 주시면 도움이 될 수 있습니다.

    +0

    이미 많은 도움이되었습니다. 당신은 첫 번째 단락에서 맞습니다. 나는 대부분의 3/4 페이지가 기본 Windows 전화 응용 프로그램이 있습니다. 기본 페이지는 응용 프로그램의 다른 페이지에서 /에서 작성되는 사진 및 정보를 포함합니다. IsolatedStorage에 표시하고 싶은 정보를 저장하고 정보를 얻고 복원 할 때 기본 페이지를 채울 수 있다고 가정합니다. 내가 MVVM 패턴을 확인해야합니다, 나는 들어 있지만 당신의 시간을 주셔서 감사합니다, Windows 전화 개발에 아주 새로운 ... – MoonKnight

    +1

    당신의 메인 페이지에 의해 액세스 할 수있는 데이터를 유지할 수 있습니다 글로벌 정적 클래스를 사용하고 메인 페이지로 돌아 가면 해당 클래스의 사진 및 기타 필요한 데이터를 가져 와서 UI를 업데이트합니다. 이는 매우 세련된 솔루션은 아니지만 작업이 완료 될 것입니다. MVVM은 작은 앱이나 1 ~ 2 명과 같이 매우 작은 팀을 위해 배우는 좋은 패턴이지만 불필요하게 복잡 할 수 있습니다. 확실히 배웁니다. 그러나 UI를위한 디자이너와 codebehind를위한 개발자와 별도로 작업하지 않는다면 아마 MVVM을 사용할 필요가 없을 것입니다. – omerkirk

    +0

    조언 주셔서 대단히 감사드립니다 ... – MoonKnight

    2

    MVVM 패턴은 좋은 방법입니다. 소규모 팀이 MVVM을 너무 복잡하다고 말하는 것은 정확하지 않습니다. MVVM의 목적은 Silverlight 또는 WPF 코드를 분리하는 것입니다.Silverlight 페이지의 코드 숨김을 사용하여 데이터에 직접 액세스하면 코드에 커플 링이 생성되고 기술적 부채가 발생합니다. 개발자가 1 인이든 100 명이든간에 UI가 데이터 클래스와 결합 된 경우 데이터 클래스를 변경해야하는 경우 해당 클래스를 사용하는 모든 UI 요소를 변경해야합니다. 이는 시간이 오래 걸리고 응용 프로그램을 변경하기가 더 어려워집니다.

    MVVM은 UI (보기)가 데이터 (모델)에 대해 알지 못하게합니다. ViewModel은 UI가 바인딩되고 UI에서 모델에 유지되어야하는 이벤트를 관리하는 코드와 뷰에서 표현해야하는 모델의 변경 사항을 나타내는 코드입니다. 이러한 이유 때문에 이벤트를 처리하기 때문에 코드에서 필요로하는 것처럼 들릴 수 있습니다. 즉, 코드 숨김에서 벗어나서 데이터가 변경 될 때 뷰에 바인딩 된 이벤트를 업데이트 할 수있는 이벤트입니다. 두 페이지가있는 경우 페이지 중 하나의 이벤트가 ViewModel로 전송되며, 필요한 경우 모델 (데이터)을 변경하고 ViewModel로 다시 전달합니다. 그런 다음 ViewModel은 해당 데이터에 바인딩 된 UI 요소 (뷰)를 업데이트합니다.

    MVVM 디자인 패턴을 구현하는 방법에 대한 좋은 데모가 here 입니다. 이 사용자는 일반적인 WPF 응용 프로그램 (Silverlight처럼)을 사용합니다. UI 코드 비헤이비어가 데이터에 직접 액세스하는 이벤트 처리기를 구현하고 MVVM 패턴을 사용하여 리팩터링합니다.

    관련 문제