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