gpt4 book ai didi

wpf - ItemsControl,VirtualizingStackPanel和ScrollViewer的高度

转载 作者:行者123 更新时间:2023-12-04 04:08:46 31 4
gpt4 key购买 nike

我想使用ItemsControl显示重要的项目列表。

我使用ItemsControl的原因是,我正在处理的应用程序中的DataTemplate要复杂得多:提供的示例代码仅反射(reflect)了我的大小调整问题。

我想 :

  • 要虚拟化的ItemsControl,因为有很多项目要显示
  • 将其大小自动扩展到其父容器(网格)
    <Grid>
    <ItemsControl x:Name="My" ItemsSource="{Binding Path=Names}">
    <ItemsControl.Template>
    <ControlTemplate>
    <StackPanel>
    <StackPanel>
    <TextBlock Text="this is a title" FontSize="15" />
    <TextBlock Text="This is a description" />
    </StackPanel>
    <ScrollViewer CanContentScroll="True" Height="400px">
    <VirtualizingStackPanel IsItemsHost="True" />
    </ScrollViewer>
    </StackPanel>
    </ControlTemplate>
    </ItemsControl.Template>
    <ItemsControl.ItemTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding}" />
    </DataTemplate>
    </ItemsControl.ItemTemplate>
    </ItemsControl>
    </Grid>


  • 后面的代码是:
    public partial class Page1: Page
    {
    public List<string> Names { get; set; }
    public Page1()
    {
    InitializeComponent();

    Names = new List<string>();
    for(int i = 0; i < 10000; i++)
    Names.Add("Name : " + i);

    My.DataContext = this;
    }
    }

    当我将ScrollViewer的高度强制设置为400px时,ItemsControl虚拟化将按我的预期工作:ItemsControl可以非常迅速地显示列表,而不管其包含多少个项目。

    但是,如果删除Height =“400px”,则列表将扩展其高度以显示整个列表,而不管其父容器的高度如何。更糟:它出现在容器的后面。

    将滚动查看器放在ItemsControl周围可以得到预期的视觉效果,但是虚拟化消失了,列表花费了太多时间来显示。

    如何实现ItemsControl的自动高度扩展和虚拟化?

    最佳答案

    问题出在ItemsControl.Template中:您在此处使用StackPanel,它为 child 提供了所需的高度。替换成类似的东西

    <Grid>
    <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel>
    <TextBlock Text="this is a title" FontSize="15" />
    <TextBlock Text="This is a description" />
    </StackPanel>
    <ScrollViewer CanContentScroll="True" Grid.Row="1">
    <VirtualizingStackPanel />
    </ScrollViewer>
    </Grid>

    它应该工作正常。

    希望能帮助到你。

    关于wpf - ItemsControl,VirtualizingStackPanel和ScrollViewer的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576623/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com