2011-09-01 4 views
1

유니티 컨테이너를 사용하여 WPF 프리즘 응용 프로그램을 개발 중입니다. 문제는 다음과 같습니다. ListBox이 있으며, 각 요소에는 자체 ViewModel이 있습니다. 해당 요소에서 위치 목록에서 위치를 선택해야합니다. 위치 목록은 모든 요소에 대해 동일합니다. 상위 ViewModel에서이 목록을 어떻게 공유 할 수 있습니까?프리즘 : 부모 ViewModel에서 ViewModel 속성 공유

  1. 사용 RegionContext :

    는 인터넷에 내가 수 있다는 것을 봤. 하지만 올바른 방법이 아닙니다 (RegionContext은 하나의 개체 만 제공 할 수 있지만 위치 만 가지고있는 것은 아닙니다).

  2. SharedService을 사용하십시오. 그러나 제 의견으로는이 방법이 실시간 데이터 변경을 위해 에 더 적합합니다.

올바른 방법이 있습니까? 목록이 항상 같은 될 것입니다 경우 모범 사례

답변

1

, 나는 보통

<ListBox ItemsSource="{Binding Source={x:Static local:Lists.Locations}}" 
     SelectedItem="{Binding CurrentLocation}" /> 
+0

당신이 답변을 수락했지만 정적 클래스/속성을 좋아하지 않기 때문에 공유 서비스를 사용합니다. –

0

라셀 (Rachels) 솔루션 외에 새로운 뷰를 생성 할 수 있습니다 내 XAML에서 정적 클래스 다음

public static class Lists 
{ 
    public static List<Location> Locations {get; set;} 

    static Lists() 
    { 
     Lists = DAL.GetLocations(); 
    } 
} 

를 사용 모델을 생성하고이 뷰 모델의 인스턴스를 IoC 컨테이너에 삽입한다. 컨테이너를 통해이 목록보기 모델을 확인하는 모든보기 모델은이 단일 인스턴스에 대한 참조를 가져옵니다.

관련 문제