2011-04-06 5 views
0

피벗에 여러 ListBox가 있고 각 속성에 대해 전체 페이지를 입력하고 싶지 않기 때문에 ListBox를 내 ViewModel에 바인딩하려고합니다. 내 문제를 설명하기 위해, 여기에 작은 샘플입니다 :ViewModel 선택에 바인딩

XAML :

<DataTemplate x:Key="PropertyTemplate"> 
     <StackPanel> 
      <TextBlock Text="{Binding Label}" /> 
      <TextBlock Text="{Binding Value}" /> 
     </StackPanel> 
    </DataTemplate> 

    <controls:Pivot> 
     <controls:PivotItem> 
      <ListBox ItemsSource="{Binding PropertySelectionOne}" ItemTemplate="{StaticResource PropertyTemplate}" /> 
     </controls:PivotItem> 

     <controls:PivotItem> 
      <ListBox ItemsSource="{Binding PropertySelectionTwo}" ItemTemplate="{StaticResource PropertyTemplate}" /> 
     </controls:PivotItem> 
    </controls:Pivot> 

뷰 모델 :

public class SomeViewModel 
{ 
    private Property _propOne; 
    public Property PropOne 
    { 
     get { return _propOne; } 
     set { _propOne = value; NotifyPropertyChanged("PropOne"); } 
    } 
    private Property _propTwo; 
    public Property PropTwo 
    { 
     get { return _propTwo; } 
     set { _propTwo = value; NotifyPropertyChanged("PropTwo"); } 
    } 
    private Property _propThree; 
    public Property PropThree 
    { 
     get { return _propThree; } 
     set { _propThree = value; NotifyPropertyChanged("PropThree"); } 
    } 
} 

그래서 기본적으로 나는에 대한 참조를 포함 할 것이다, PropertySelectionOnePropertySelectionTwo 내리스트 박스를 결합 할 내 ViewModel의 속성 중 하나를 선택합니다. 예를 들어, PropertySelectionOnePropOnePropTwo을 포함 할 수 있고 PropertySelectionTwoPropTwoPropThree을 포함 할 수 있습니다.

응용 프로그램의 아키텍처를 변경하지 않고 바인드 할 새 속성에 이러한 속성을 "그룹화"하는 간단한 방법이 있습니까? 서로 다른 특성을 가지고있어

감사

+0

ObservableCollection을 만듭니다. . PropOne과 PropTwo를 추가하십시오. 그런 다음 ObservableCollection을 목록 상자의 itemssource에 바인딩합니다. –

+0

Evan, 나는 그것을 실제적으로 시도했지만 컬렉션에 올바른 수의 항목이있는 것으로 보이지만 항상 null입니다. 내가 한 방식은 그냥 ObservableCollection PropertyCollection이고 생성자는 PropertyCollection = new ObservableCollection {PropOne, PropTwo}' – RajenK

답변

0

다른 목록 상자에서 같은 날짜 형식에서 표시 할, 다음 틀림없이 당신은 당신의 뷰 모델을 분할해야하지만, 당신은을 변경하지 않으 말 아키텍처 선택.

그래서해야 할 일은 각 ListBox에 표시 할 속성과 속성을 정의하는 각 ListBox에 대해 ItemTemplate을 제공하는 것입니다. 그러면 모든 목록 상자에 대해 Items Source 을 동일한 데이터 소스에 바인딩 할 수 있지만 ItemTemplate에 따라 다른 속성을 제공합니다.

이러한 개념이 얼마나 익숙한 지 잘 모르지만 ItemsSource은 데이터 인스턴스 모음 (SomeViewModel?)이어야합니다. 맞습니까?

+0

감사합니다. Derek에게 감사드립니다. 저는이 두 가지 옵션을 이미 고려했습니다. 하나의 일반적인 ItemTemplate을 가지며 동일한 ViewModel에있는 속성의 "컬렉션"에 바인딩합니다. – RajenK