2010-12-15 110 views
0

使用Silverlight 4/MVVM。Silverlight MVVM绑定列表框

我想将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

我认为你需要的ListBoxItemsSource绑定到ObservableCollectionForumViewModel S,而不仅仅是一个单一的一个IEnumerable

+0

我已经解决了这个问题 - 这是文本块的绑定语法 – Greg 2010-12-15 14:25:03