2016-05-24 20 views
1

我有被由包括持有這樣的圖像和一個按鈕網格的項目dyanmically填充一個ListView:如何將不同結構的項目插入到ListView中?

<ListView x:Name="Thumbnails" HorizontalContentAlignment ="Left" VerticalContentAlignment="Top" Padding="0" Background ="#81AFD3" Grid.Row="6" Grid.Column="6" Grid.ColumnSpan="10" Grid.RowSpan="27" ScrollViewer.VerticalScrollBarVisibility="Visible" ItemsSource="{Binding ThumbModelList}" SelectedIndex="{Binding SelectedIndx}"> 
    <ListView.ItemTemplate> 
        <DataTemplate> 
         <ListViewItem> 

          <Grid Width="{Binding DataContext.ThumbnailWidth, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}" Height="{Binding DataContext.ThumbnailHeight, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}" HorizontalAlignment="Center" VerticalAlignment="Top" Background="Transparent" > 

           <Grid.RowDefinitions> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
            <RowDefinition Height="1*" /> 
           </Grid.RowDefinitions> 

           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
            <ColumnDefinition Width="1*" /> 
           </Grid.ColumnDefinitions> 

           <Image Name="thumbImage" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="14" Grid.RowSpan="7" Stretch="UniformToFill" Source="{Binding MainThumbImagePath}"></Image> 

           <Button Name="slide_ON_OFF" Grid.Row="0" Grid.Column="10" Grid.ColumnSpan="4" Grid.RowSpan="4" VerticalAlignment="Center" Background="Transparent" Command="{Binding DataContext.SlideOnOffCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}"> 
            <Image Source="{Binding SomePath}"/> 
           </Button> 

          </Grid> 
         </ListViewItem> 
        </DataTemplate> 
       </ListView.ItemTemplate> 

      </ListView> 


     now, once the list is populated dynamically with those items, at certain positions, I want to insert a diffrerent item that has three different buttons like this: 

    <Grid Width="{Binding DataContext.ThumbnailWidth, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}" Height="{Binding DataContext.ThumbnailHeight, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}" HorizontalAlignment="Center" VerticalAlignment="Top" Background="Transparent" > 

         <Grid.RowDefinitions> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
          <RowDefinition Height="1*" /> 
         </Grid.RowDefinitions> 

         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
          <ColumnDefinition Width="1*" /> 
         </Grid.ColumnDefinitions> 


         <Button Name="slide_ON_OFF" Grid.Row="0" Grid.Column="10" Grid.ColumnSpan="4" Grid.RowSpan="4" VerticalAlignment="Center" Background="Transparent" Command="{Binding DataContext.Command1, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}"/> 
         <Button Name="slide_ON_OFF" Grid.Row="0" Grid.Column="10" Grid.ColumnSpan="4" Grid.RowSpan="4" VerticalAlignment="Center" Background="Transparent" Command="{Binding DataContext.Command2, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}"/> 
         <Button Name="slide_ON_OFF" Grid.Row="0" Grid.Column="10" Grid.ColumnSpan="4" Grid.RowSpan="4" VerticalAlignment="Center" Background="Transparent" Command="{Binding DataContext.Command3, RelativeSource={RelativeSource FindAncestor, AncestorType=ListView}}"/> 
    </Grid> 

這是可以做到的,而且在何處以及如何聲明這個其他列表項在XAML中?

+1

你應該使用每種數據類型的數據模板 – ZSH

+0

好的,但是它怎麼知道最初填充哪種數據類型呢?我首先希望通過'DataType1'循環來填充列表,然後在手動插入'Datatype2'。 – Ivan

+1

ThumbModelList類型應該是itemtype1和itemtype2的基本類型列表(例如ObserbableCollection ),現在當您添加type1或type2項目時,它具有相應的數據模板,如下面答案中的示例所示 – ZSH

回答

1

可以使用通過數據類型或模板選擇的DataTemplates,這裏是數據類型的例子:Example

這是一個簡單的, 這也取決於你的數據/ DataContext的