2017-08-15 118 views
0

所以,有點瘋狂的請求。我需要一個項目列表,我打算使用ListView,但在每個元素內部,我需要另一個「列表」,這樣可以水平擴展。在XAML中使用ListView ItemTemplate內的ItemsControl

這裏的基本思想是我要爲粗繪圖:

Crude Drawing of desired look 對於我的代碼,這是我嘗試過,但它不工作。 (是的,我故意不使用綁定但這樣我就可以使用設計視圖把一切看右)

<ListView> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ItemsControl ItemsSource="{Binding}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <Grid Grid.IsSharedSizeScope="True"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn0" /> 
           <ColumnDefinition Width="Auto" SharedSizeGroup="KpiColumn1" /> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto" /> 
           <RowDefinition Height="Auto" /> 
          </Grid.RowDefinitions> 

          <StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0"> 
           <TextBlock Text="Test" /> 
           <TextBlock Text="Test" FontSize="8" Margin="0,-4,0,0" /> 
          </StackPanel> 

          <TextBlock Grid.Row="0" Grid.Column="2" Text="Test" /> 
          <TextBlock Grid.Row="1" Grid.Column="0" Text="Test" /> 
          <TextBlock Grid.Row="1" Grid.Column="2" Text="Test" /> 
         </Grid> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.Items> 
     <MenuItem /> 
    </ListView.Items> 
</ListView> 

如何使用一個ListView持有它的每一個項目的項目列表,根據List中每個ListItem所綁定的元素數量,水平擴展?

回答

1

將此添加到您的內部ItemsControl中,並且項目將以水平對齊方式顯示。

<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal"/> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 

請注意,您將無法使用設計視圖這一點。您需要刪除您擁有的ListView.Items,而是使用綁定或代碼隱藏功能在運行時顯示它。

像這樣的事情應該工作,如果你給ListViewLVName

LV.ItemsSource = new List<List<int>> 
{ 
    new List<int> {1,2,3,4, }, 
    new List<int> {1,2,3,4, } 
};