【问题标题】:Using an ItemsControl inside of a ListView ItemTemplate with XAML使用 XAML 的 ListView ItemTemplate 内的 ItemsControl
【发布时间】:2017-08-15 16:51:45
【问题描述】:

所以,有点疯狂的要求。我需要一个项目列表,我打算使用 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>

我如何使用ListView 来保存每个项目中的项目列表,并根据每个ListItem 绑定到的List 中有多少元素来水平扩展?

【问题讨论】:

    标签: c# wpf xaml listview itemtemplate


    【解决方案1】:

    将此添加到您的内部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, }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2016-05-07
      相关资源
      最近更新 更多