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

私はあなたがBindingエンジンを混乱させると信じています。あなたがしよう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

私はあなたがObservableCollectionまたはForumViewModel Sだけでなく、単一のもののIEnumerableListBoxItemsSourceを結合する必要があると思うです。

+0

問題を修正しました。これは、textblocksのバインディング構文です – Greg