当内容高度可变时,列表框滚动条滑块会更改大小

2023-12-10

我有一个显示许多对象的列表框,每个对象的高度都可以是可变的,具体取决于每个对象具有的值的数量。请参阅我之前在这里回答的问题。

许多对象是 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 将拉伸到内容大小。列表框还具有 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>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当内容高度可变时,列表框滚动条滑块会更改大小 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys

随机推荐

  • HikariCP 包装器(线程安全)

    我正在学习使用HikariCP 我是java新手 我找到了一个包装器 但我认为它不是线程安全的 单例的实例是线程安全的 但不是方法getConnection 班级是这样的 public class HikariCPWrapper priva
  • 为什么“模块”对象不可调用? [复制]

    这个问题在这里已经有答案了 可能的重复 类型错误 模块 对象不可调用 这是我第一次尝试 Python 只是想在沉寂 10 年之后重拾基本的编程知识 这对我来说是一种新语言 Python 基本思想是一个微型战斗引擎 它决定更好的打击 接下来是
  • Android AudioRecord 初始化延迟

    这是我正在处理的相关代码的示例 AudioRecord recorder setupAudio recorder startRecording 设置音频方法 public AudioRecord setupAudio AudioRecord
  • 如何使用jqPagination

    请帮助我 我不知道如何使用jq分页 http beneverard github com jqPagination 我希望每个页面都有其他内容 例如 第 1 页 内容是一个段落 第 2 页是其他段落 我不想单击显示 隐藏来显示内容 谢谢你
  • javascript window.onload 事件正确用法

    我有这个循环代码来减少 Javascript 中的 DOM 调用 并重用它们 aarr for var z 1 z lt 10 z c z 1 aarr c document getElementById a z 我已经证明 如果代码在 D
  • PHPcurl_setopt() CURLOPT_PROGRESSFUNCTION

    我看到在curl setopt 文档您可以设置回调函数来显示curl exec的进度 回调函数如何使用就不多说了 有人知道吗 我只想输出已下载到 STDOUT 的文件的百分比 谢谢 这就是回调在 C 中的样子 typedef int cur
  • UDP 打洞主机特定故障

    我编写了一个设置点对点链接的程序 该程序可以在以下位置找到 http basyl co uk code punch doc files Readme txt html 分为两部分 运行在公共主机上的服务器 以及所需对等链路每一端使用的客户端
  • 如何使用谷歌脚本将详细信息表复制到另一个电子表格

    情况 我有一个包含 10 个工作表的电子表格 有 15 个用户登录并修改它 我只想从其他电子表格中复制 6 张表格 需要的脚本函数 该脚本应该将工作表复制到另一个特定的电子表格中 1 来源 XXXXXX 我只想从源将 Sheets1 2 3
  • 如何以编程方式用 CoreData 行填充 NSArrayController?

    经过几个小时 几天的搜索和深入研究示例项目后 我得出的结论是我需要问一下 如果我绑定 assetView IKImageBrowserView 直接到 IB 实例NSArrayController一切都很好 void awakeFromNi
  • 在 Perl 中成功匹配正则表达式后,如何访问捕获的子字符串?

    我正在 Perl 中搜索一个字符串并将其存储在另一个标量变量中 我想打印这个标量变量 下面的代码似乎不起作用 我不确定出了什么问题以及正确的解决方法是什么 为什么程序中不存在它却打印 1 正在运行的数据 DATA 13 E 0 496 gt
  • 在 MySQL 中按某些列排序以及按 rand() 排序

    是否可以按某些列以及 RAND 对结果集进行排序 例如 SELECT a b c FROM table ORDER BY a DESC RAND LIMIT 0 10 谢谢 你正在做的事情是有效的 它将按降序排列结果a但随机化关系的顺序 但
  • java.library.path 中缺少文件

    在从 openni 编译演示时 我偶然发现了这个错误 Exception in thread main java lang UnsatisfiedLinkError no OpenNI jni in java library path at
  • BASH:搜索字符串并准确显示子字符串在其中出现的确切次数

    我已经搜索遍了 但仍然找不到这个简单的答案 我确信这很容易 如果您知道如何完成此操作 请提供帮助 样本 txt 是 AAAAA 我想找到组合 AAA 发生的确切时间 如果你只是使用例如 grep o AAA sample txt wc l
  • 如何将此方法作为扩展方法添加到我的类的属性中?

    我有一个方法 我想将此方法作为扩展方法添加到我的类的属性中 该方法给出一个表达式作为输入参数 方法如下 public static string GetPropertyName
  • 修改 Google App Engine 端点 (Android) 中的 HTTP 标头

    我想将自定义标头添加到发送到端点的 HTTP 包中 我读到我可以在 Endpoint 方法中访问原始 HTTP 数据 通过添加 HttpServletRequest 参数 我正在寻找的是一种解决方案 或黑客 来访问和修改 Android 客
  • C:strtok_r的正确用法

    如何使用 strtok r 而不是 strtok 来执行此操作 char pchE strtok NULL 现在我正在尝试使用strtok r正确 但有时我会遇到问题strtol 我有一个线程 同时 执行 10 次 char savedEn
  • 修改传递给函数的列表切片

    是否可以将列表的切片传递到函数中并通过切片修改列表 这似乎不起作用 def foo a list a list 0 abc x 1 2 3 4 foo x 0 2 我希望 x 现在是 x abc 2 3 4 不 您所描述的意义上的 列表切片
  • IKImageView 和滚动条

    我正在尝试使用苹果提供的 IKImageViewDemo http developer apple com mac library samplecode IKImageViewDemo index html 并且我正在尝试向其添加滚动条 我
  • Selenium、Nunit 最佳实践? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想了解更多有关如何使用
  • 当内容高度可变时,列表框滚动条滑块会更改大小

    我有一个显示许多对象的列表框 每个对象的高度都可以是可变的 具体取决于每个对象具有的值的数量 请参阅我之前在这里回答的问题 许多对象是 5 行高 而其他对象是 1 行 ListBox 中的滚动条看起来并不像这样 可能是由于虚拟化的原因 当你