2010-12-15 7 views
0

Silverlight 4/MVVM 사용.Silverlight MVVM ListBox 바인딩

ViewModel을 사용자 지정 템플릿이있는 목록 상자에 바인딩하려고하는데 데이터가 표시되지 않습니다. DisplayMemberPath 속성을 설정하면 원시 데이터를 표시하도록 관리했습니다. 이 속성을 제거하고 텍스트 블록에 바인딩하려고 시도하면 아무 것도 표시되지 않습니다. 다음은 XAML

<ListBox Height='200' 
      HorizontalAlignment='Left' 
      Margin='10,10,0,0' 
      Name='lstForumTopics' 
      VerticalAlignment='Top' 
      Width='200' 
      DataContext='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}' 
      ItemsSource='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}'> 
     <ListBox.ItemTemplate> 

      <DataTemplate> 
       <StackPanel Orientation='Vertical'> 
        <TextBlock Text='{Binding ForumTopicText,Source={StaticResource ForumViewModel}}'></TextBlock> 
        <TextBlock Text='{Binding PostCount,Source={StaticResource ForumViewModel}}'></TextBlock> 
       </StackPanel> 
      </DataTemplate> 

     </ListBox.ItemTemplate> 
     <ListBox.Background> 
      <LinearGradientBrush EndPoint='0.5,1' 
           StartPoint='0.5,0'> 
       <GradientStop Color='#FFDCE2E5' 
           Offset='1' /> 
       <GradientStop Color='White' 
           Offset='0' /> 
      </LinearGradientBrush> 
     </ListBox.Background> 
    </ListBox> 

답변

0

나는 바인딩 엔진을 혼동스럽게 생각합니다. 당신 작업 ... 정적 리소스 시도

DataContext="{Binding Source={StaticResource ForumViewModel}}" 
ItemsSource="{Binding Path=ForumTopics}" 

<TextBlock Text="{Binding Path=ForumTopicText}" /> 
<TextBlock Text="{Binding Path=PostCount}" /> 

를 사용하려는 경우 제어는 다른 특성이 결합되는 객체를 보유하고 DataContext에 있습니다. ItemsSource는 바인딩 할 DataContext 객체의 속성 이름을 알아야합니다. 마지막으로, DataTemplate은 항목 소스 내의 각 개체에 DataContext를 설정하므로 ItemsSource 내의 개체 속성 이름에만 바인딩하면됩니다.

0

난 당신이 ObservableCollection 또는 ForumViewModel의, 다만 하나 하나의 IEnumerableListBoxItemsSource 바인딩에 필요가 있다고 생각합니다.

+0

문제가 해결되었습니다. 텍스트 블록의 바인딩 구문이었습니다. – Greg