WPF:禁用列表框,但启用滚动

2023-11-27

整个早上我都在用头撞这个问题。

基本上,我有一个列表框,我希望防止人们在长时间运行的过程中更改选择,但允许他们仍然滚动。

解决方案:

所有的答案都很好,我选择了吞咽鼠标事件,因为这是最直接的。我将 PreviewMouseDown 和 PreviewMouseUp 连接到一个事件,该事件检查了我的 backgroundWorker.IsBusy,以及是否将事件参数上的 IsHandled 属性设置为 true。


如果你查看ListBox的控件模板,里面有一个ScrollBar和ItemsPresenter。因此,禁用 ItemsPresenter 就可以轻松实现这一点。在列表框中使用以下样式就可以了。

    <Style x:Key="disabledListBoxWithScroll" TargetType="{x:Type ListBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListBox}">
                    <Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="1">
                        <ScrollViewer Padding="{TemplateBinding Padding}" Focusable="false">
                            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsEnabled="False" IsHitTestVisible="True"/>
                        </ScrollViewer>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                        </Trigger>
                        <Trigger Property="IsGrouping" Value="true">
                            <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在列表框中使用样式

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

WPF:禁用列表框,但启用滚动 的相关文章

  • 更换桌面壁纸/在桌面上绘制

    我想对我的 Windows 桌面进行一些自定义绘图 以便它看起来可以替换桌面背景 壁纸 我的第一次尝试是获得 DCdesktopListView并绘制它 IntPtr desktopDC GetWindowDC desktopListVie
  • WPF 通知获取属性的 PropertyChanged

    我有INotifyPropertyChanged实施使用CallerMemberName public event PropertyChangedEventHandler PropertyChanged protected virtual
  • 高级 XAML 动画效果。脉冲、行进的蚂蚁、旋转。警报

    我有一个警报列表 当警报被激活时 要求使其更加引人注目 当警报状态发生变化时 我想在该项目周围创建脉冲外发光几秒钟 然后让它消失 我遇到的问题是我似乎无法仅在需要时才出现 DropShadowEffect 我尝试将不透明度设置为 0 将颜色
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • 使用 MVVM 在 WPF 中进行 COMBOBOX 过滤

    我正在使用 WPF mvvm 方法开发一个应用程序 我有一个要求 必须在组合框中显示项目列表以供选择 基于一些标志 我需要从组合框中过滤掉一些项目以供选择 我尝试使用两种不同的项目源 一个具有完整列表 另一个具有过滤列表 并基于我想要更改项
  • 在 WPF 中处理第二个 UI 线程

    我有一个长时间运行的进程在我的 UI 线程上运行 我无法离开 UI 线程 相反 我尝试创建第二个具有等待动画的 UI 线程 这是我用来创建第二个 UI 线程的代码 Private busyThread As Thread Private w
  • 如果在构造函数中初始化该属性,则似乎不会设置 XAML 绑定

    当属性在构造函数内初始化时 我遇到了控件模板内数据绑定的问题 这是展示案例 您也可以下载样品溶液 http www filehosting org file details 75794 WpfApplication5 zip 自定义控件1
  • TextBlock:Text与StringFormat的绑定

    是否可以绑定Text and StringFormat too
  • 如何正确使用Dispatcher.BeginInvoke?

    我几乎在互联网上到处搜索 我用谷歌搜索了很多次并找到了很多结果 但我仍然找不到解决我的问题的方法 我正忙着改造旧的WinForms应用程序到新的 WPF 应用程序 但我在使用某些命令时遇到问题 在他们使用的 Winforms 应用程序中Co
  • WPF;单击 ListView 中的空白区域时如何取消选择所有选定的项目

    当我有几个 甚至一个 selected items我按简单click在我的空白处ListView 空白 非行 我想取消选择所有选定的项目 这是我取消选择所有项目的功能 private void DeselectAllListViewItem
  • 如何将 ObservableCollection 绑定到 AvalonDock DocumentPaneGroup?

    我需要在 AvalonDock 2 0 中加载项目集合作为文档 这些对象继承自一个抽象类 我想根据哪个子类在文档中渲染一个框架 这是我的 XAML
  • WPF - 检测鼠标按下一段时间

    检测鼠标按钮何时在特定元素上按住特定时间段的最佳方法是什么 感谢您的提示 我创建了一个附加属性以避免任何代码隐藏 using System using System Windows using System Windows Threadin
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • 如何在 WPF 中实现虚线或点线边框?

    我有一个ListViewItem我正在申请Style到 我想把灰色虚线作为底部Border 我怎样才能在 WPF 中做到这一点 我只能看到纯色画笔 这在我们的应用程序中效果很好 允许我们使用真正的边框而不是乱用矩形
  • 即使在 GC Collect 和 WaitForPendingFinalizers 之后,窗口对象在关闭后也未释放?

    这是一个简单的测试应用程序 可帮助了解 WPF 内存使用情况 我想了解的关键是为什么MainWindow即使在关闭并等待 GC 完成之后 仍然被引用并且它的内存没有被释放 参见下面的代码清单 文本 MainWindow Finalizer
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 如何在Wpf中的用户控件中调用MahApps Metro对话框

    当我尝试调用 MahApps Metro 对话框时 我在传递值时遇到错误 在传递参数时调用对话框控制时我需要传递 Metrowindow 参数 但我需要在用户控件中调用它 下面是当我需要对话框控制时我将调用的方法 public async
  • 比较运算符性能 <= 与 !=

    让我们首先声明代码可读性胜过微优化 我们应该将其留给编译器 这只是一个奇怪的案例 具体细节似乎与一般建议相比很有趣 因此 我在搞素数生成器函数 并提出了一种奇怪的行为 其中 人们建议效率最高 实际上效率最低 而 C private stat
  • 从 xaml 获取 RowIndex

    我有一个带有 DataGridTemplateColumns 的 DataGrid 在 TemplateColumn 中 我使用工作正常的 DataTrigger 它从 DataGrid 父级检索项目计数
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个

随机推荐

  • Tomcat连接池耗尽

    我在我的项目中使用 Apache Tomcat JDBC 连接池 我很困惑 因为在重负载下我不断看到以下错误 12 26 36 410 ERROR http XX XXX XXX X XXXXX X org apache tomcat jd
  • mysqldump 仅转储具有特定前缀的数据库

    我有大约 100 个不同的数据库 我想使用 mysqldump 转储以前缀 asd 开头的数据库 我尝试了这个 但它不起作用 mysqldump u user p pwd h server url asd single transactio
  • 在 Swift 中更改导航栏颜色

    我使用选择器视图来允许用户选择整个应用程序的颜色主题 我计划更改导航栏 背景和可能的选项卡栏的颜色 如果可能的话 我一直在研究如何做到这一点 但找不到任何 Swift 示例 谁能给我一个我需要用来更改导航栏颜色和导航栏文本颜色的代码示例 选
  • Angular 2 - Jquery | Angular 2 - Jquery | Angular 2 - Jquery | Angular 2 - Jquery使用鼠标位置添加样式(上/左)

    我正在寻找一种在 Angular 2 中的特定位置 鼠标事件 x y 添加 div 组件的方法 https jsfiddle net lennartquerter w2c7uqw6 this xPos xPos this yPos yPos
  • 在 Vim 中映射 Esc 键

    I m a beginning Vim user I hate pressing the Esc key which is a little far on my T61 In order to return to command mode
  • Android:EditText 中多行且无自动建议

    是否可以有一个允许多行且不显示建议的 EditText 我尝试使用以下代码 android inputType textFilter textMultiLine 我在这个中看到了question 但这对我不起作用 如果我尝试同时使用两者 E
  • 使用 Lodash 将 JavaScript 数组拆分为块

    我需要将 JavaScript 数组拆分为n大小的块 例如 给定这个数组 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 and a n等于 4 输出应该是这样的 a1 a2 a3 a4 a5 a6 a
  • Jquery——任何事件都会触发动作[重复]

    这个问题在这里已经有答案了 jquery 中是否有任何事件触发时会触发函数的东西 我想要这样的东西 anyEvent function error html on blur change click dblclick error focus
  • WKWebView reload() 无法刷新当前页面

    离线时第一次加载网页失败 然后我连接网络呼叫reload 刷新当前页面 但这不起作用 WKNavigationDelegate无法得到任何回调 功能reloadFromOrigin 也不工作 但医生说 abstract Reloads th
  • .net mvc 中从 Bootstrap 3.7 更新到 5.0.2 产生错误 - System.NullReferenceException

    我卸载了 net MVC 应用程序附带的基本引导模板 并从 NuGetPackage Manager 安装了引导程序 5 0 2 现在我在运行时遇到这个问题 构建正在成功发生 System NullReferenceException HR
  • 在 F# 中将列表拆分为两个相等的列表

    我对 F 确实很陌生 我需要一些关于 F 问题的帮助 我需要实现一个剪切函数 将列表分成两半 以便输出 切 1 2 3 4 5 6 val it int 列表 int 列表 1 2 3 4 5 6 我可以假设列表的长度是偶数 我还希望定义一
  • AutoMapper 如何根据上下文以不同方式将对象 A 映射到对象 B

    呼叫所有 AutoMapper 专家 我希望能够根据运行时的上下文以不同的方式将对象 A 映射到对象 B 特别是 我想忽略一种映射情况下的某些属性 并在另一种情况下映射所有属性 我遇到的是 Mapper CreateMap 可以在不同的映射
  • 是否可以关闭特定更新的休眠版本增量?

    是否可以使用休眠更新数据库中的实体而不修改实体的版本 使用我的 Web 应用程序 用户可以创建或更新实体 在任何用户操作之后 处理 这些实体的另一个异步进程在哪里 如果用户在实体 处理 之前打开实体进行更新 但在 处理 之后尝试保存实体 则
  • 在构建期间自动化 xsd.exe

    我需要一种在构建期间基于 xsd 文件自动重新生成 cs 文件的方法 最好不涉及任何自定义加载项 这也需要在 CI 构建上运行 我不确定我是否遗漏了一些明显的东西 或者这在我看来真的很棘手吗 我使用这个脚本 echo off cd 1 ca
  • 从 Typescript 中的 http url 导入 ES6 模块

    我正在编写一个 ES6 模块 它依赖于使用 http url 指定的其他 ES6 模块 如下所示 import el mount from https cdnjs cloudflare com ajax libs redom 3 26 0
  • 将闭合曲线拟合到一组点

    我有一组点pts形成一个循环 看起来像这样 这有点类似于31243002 但我不想将点放在点对之间 而是想通过点拟合一条平滑的曲线 坐标在问题末尾给出 所以我尝试了类似的方法scipy文档关于插值法 values pts tck inter
  • Sklearn - 如何预测所有目标标签的概率

    我有一个包含目标变量的数据集 可以有 7 个不同的标签 我的训练集中的每个样本只有一个目标变量标签 对于每个样本 我想计算每个目标标签的概率 所以我的预测将由每行 7 个概率组成 在sklearn网站上我读到了有关多标签分类的内容 但这似乎
  • Windows 应用商店 - 拉伸图标

    我在 Windows 商店中遇到了一个小问题 我已在提交中上传了所有必需的图形 并且该应用程序具有所有必需的图形 包括框和平铺图像 然而 在商店中 应用程序入口使用的是宽图像 问题是它使用的宽图像实际上是一个被拉伸的框图像 有什么想法出了什
  • 使用 .NET SDK 按路径获取 Microsoft Graph Drive 项目

    因为它是有记录的 使用 Microsoft Graph REST API 您可以 以及其他选项 通过 ID 或路径获取项目 这工作正常 正如预期的那样 GET me drive items item id children GET me d
  • WPF:禁用列表框,但启用滚动

    整个早上我都在用头撞这个问题 基本上 我有一个列表框 我希望防止人们在长时间运行的过程中更改选择 但允许他们仍然滚动 解决方案 所有的答案都很好 我选择了吞咽鼠标事件 因为这是最直接的 我将 PreviewMouseDown 和 Previ