2010-12-15 9 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

Я считаю, что вы вводите в заблуждение механизм привязки. Если вы собираетесь использовать StaticResource попробовать ...

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

Я думаю, что вам нужно связывать ItemsSource в ListBox к ObservableCollection или IEnumerable из ForumViewModel с, а не только один.

+0

Я исправил проблему - это был синтаксис связывания текстовых блоков – Greg 2010-12-15 14:25:03

Смежные вопросы