簡體   English   中英

在XAML的ListView ItemTemplate內部使用ItemsControl

[英]Using an ItemsControl inside of a ListView ItemTemplate with XAML

因此,有點瘋狂的要求。 我需要一個項目列表,我打算將其用於ListView ,但是在每個元素中,我需要另一個可以水平擴展的“列表”。

這是我要追求的基本思想的粗略圖:

所需外觀的粗制圖 對於我的代碼,這是我嘗試過的,但是沒有用。 (是的,我故意不使用綁定,所以我可以使用設計視圖使一切看起來正確)

<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>

我如何基於每個ListItem綁定到List中的元素數量,使用ListView在其每個項目中保持水平擴展的項目List

將其添加到內部ItemsControl ,各項將以水平對齊方式顯示。

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

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

如果給ListView NameLV ,這樣的事情應該起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM