绑定ObservableCollection列表

时间:2012-06-08 09:48:32

标签: c# silverlight windows-phone-7

在我的Windows Phone应用程序中,我有一个带有ContentItems绑定的listBox:

private ObservableCollection<ContentItemViewModel> _contentItems;

public ObservableCollection<ContentItemViewModel> ContentItems
{
    get { return _contentItems; }
}
 <ListBox x:Name="ContentListBox"   Margin="0,117,12,0"  VirtualizingStackPanel.VirtualizationMode="Standard" Logic1:TiltEffect.IsTiltEnabled="True" ItemsSource="{Binding ContentItems}"   Tap="ContentListBox_Tap" MinHeight="656"  >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="vertical" >
                <Grid Height="{Binding ItemHeight}" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image   Grid.Column="0"  x:Name="itemIco1"  Width="Auto" Height="Auto" HorizontalAlignment="Left" Source="{Binding IconURL}" Stretch="Fill" CacheMode="BitmapCache" VerticalAlignment="Top" Margin="5,5,5,5" Visibility="Visible"/>
                    <ListBox IsHitTestVisible="False" Grid.Column="1"  VerticalAlignment="Center"  >
                        <ListBox.ItemContainerStyle>
                            <Style TargetType="ListBoxItem">
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                            </Style>
                        </ListBox.ItemContainerStyle>
                        <TextBlock x:Name="ContentCategoryTitle" Height="70" Text="{Binding ContentTitle}" Width="460"  Margin="5,34,0,0"  TextTrimming="WordEllipsis" TextWrapping="NoWrap"    FontSize="28" FontFamily="Segoe WP Semibold"   Foreground="#FFF7F7F7"  VerticalAlignment="Bottom" />
                    </ListBox>
                </Grid>
                <Rectangle Fill="#FF585858" Height="1" Margin="0,0,0,0"  Width="460" VerticalAlignment="Bottom" HorizontalAlignment="Left" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

是否可以绑定ObservableCollection<ContentItemViewModel>,但 - ObservableCollection<List<ContentItemViewModel>>

1 个答案:

答案 0 :(得分:3)

如果您有一系列收藏品,那是可能的。或者为什么不呢?

ObservableCollection<ObservableCollection<ContentItemViewModel>>

如果您希望向您的UI通知您的子集合的集合更改。

<强>更新

例如:

查看模型

public ObservableCollection<ObservableCollection<ContentItemViewModel>> ContentItems
{
   get { return _contentItems; }
   set { _contentItems = value; // Notify of property change here, this allows you to change the ContentItems reference after view model construction }
}

public MyViewModel()
{
    // Populate content items
    this.ContentItems = new ObservableCollection 
          {
              new ObservableCollection { new ContentItemViewModel() },
              new ObservableCollection { new ContentItemViewModel(), new ContentItemViewModel() }
          };
}

视图

<ListBox ItemsSource="{Binding ContentItems}" ...>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <Grid>
            <ListBox ItemsSource="{Binding}">
               <ListBox.ItemTemplate>
                 <DataTemplate>
                    <Grid>
                       <TextBlock Text="{Binding MyContentItemViewModelProperty}" />
                    </Grid>
                 </DataTemplate>
               </ListBox.ItemTemplate>
            </ListBox>
         </Grid>
      </DataTemplate>
    <ListBox.ItemTemplate>
 </ListBox>