gpt4 book ai didi

c# - 当内容高度可变时,列表框滚动条拇指改变大小

转载 作者:太空狗 更新时间:2023-10-29 22:25:07 26 4
gpt4 key购买 nike

我有一个显示了许多对象的列表框,每个对象的高度都可以根据每个对象具有的值的数量而定。 See my previous question that was answered here.

许多对象是 5 行高,而其他对象是 1 行。ListBox 中的滚动条看起来不像这样,可能是由于虚拟化。当您滚动浏览时,滚动条上的拇指会改变其大小,具体取决于当前有多少项目实际适合该框。这使得拇指有时很大,有时又很小。

由于此 ListBox 也包含在 TabControl 中,当您从一个选项卡切换到另一个选项卡时,当您返回时,ListBox 通常会滚动到不同的部分。

有什么解决此类问题的想法吗?

附加信息:禁用虚拟化确实解决了滚动问题,尽管以较慢的初始显示为代价。但是,在水平调整大小时(垂直调整没问题)调整带有内容的 ListBox 的大小会导致严重滞后,我假设这是由于我的模板宽度发生变化并且需要在每个元素上重绘:

<DataTemplate DataType="{x:Type xmlset:Variable}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="170"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border BorderThickness="1,0,0,1" BorderBrush="Black">
<TextBlock Margin="2,2,0,2" Text="{Binding Path=Identifier.Name, Mode=OneWay}"/>
</Border>
<ItemsControl IsTabStop="False" Grid.Column="1" ItemsSource="{Binding Path=Values, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Border Grid.Column="0" BorderThickness="1,0,0,1" BorderBrush="Black">
<TextBlock Margin="2,2,0,2" Text="{Binding Path=Optimization, Mode=OneWay}"/>
</Border>
<Border Grid.Column="1" Width="Auto" BorderThickness="1,0,1,1" BorderBrush="Black">
<TextBox Margin="0,2,0,2" BorderThickness="0" Text="{Binding Path=Value}" TextChanged="TextBox_TextChanged"/>
</Border>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>

这是在字段边缘周围绘制边框以进行视觉分组,其中 val 将拉伸(stretch)到内容大小。列表框也有 Horizo​​ntalContentAlignmment = Stretch 以确保这看起来正确。

-------------------- var - opt - val --     --------------     - opt - val --     --------------     - opt - val --------------------

注意:如果需要在不同的问题中提出这个问题,请告诉我,我会把问题分开

最佳答案

为什么不关闭 ListBox 本身的任何大小限制,让它根据内容调整大小并将其包装到 ScrollViewer 中,为后者设置适当的大小?

标记应如下所示:

    <ScrollViewer Width="640px" Height="480px">
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<!--Visualization of a list item-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>

如果以这种方式实现,我没有看到滚动期间拇指大小发生变化。

关于c# - 当内容高度可变时,列表框滚动条拇指改变大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976586/

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