相关文章推荐
首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品, 尽在小程序
立即前往

如何取消用户的WPF TreeView点击?

在WPF中,取消用户的TreeView点击事件可以通过以下几种方法实现:

  1. 使用命令绑定:

在TreeView的ItemContainerStyle中,可以使用命令绑定来绑定一个自定义的命令。这个命令可以在ViewModel中定义,并在命令中处理点击事件。

代码语言: csharp
复制
<TreeView.ItemContainerStyle>
   <Style TargetType="{x:Type TreeViewItem}">
       <Setter Property="Command" Value="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType=TreeView}}" />
       <Setter Property="CommandParameter" Value="{Binding}" />
    </Style>
</TreeView.ItemContainerStyle>

然后在ViewModel中定义MyCommand命令,并在Execute方法中处理点击事件。

代码语言: csharp
复制
public ICommand MyCommand { get; set; }
public MyViewModel()
    MyCommand = new RelayCommand<object>(ExecuteMyCommand);
private void ExecuteMyCommand(object parameter)
    // 处理点击事件
}
  1. 使用附加属性:

可以使用附加属性来处理点击事件。在附加属性中,可以使用事件触发器来处理点击事件。

代码语言: csharp
复制
public class TreeViewItemBehavior
    public static ICommand GetCommand(DependencyObject obj)
        return (ICommand)obj.GetValue(CommandProperty);
    public static void SetCommand(DependencyObject obj, ICommand value)
        obj.SetValue(CommandProperty, value);
    public static readonly DependencyProperty CommandProperty =
        DependencyProperty.RegisterAttached("Command", typeof(ICommand), typeof(TreeViewItemBehavior), new UIPropertyMetadata(null, OnCommandChanged));
    private static void OnCommandChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        var item = sender as TreeViewItem;
        if (item == null)
            return;
        if (e.NewValue != null)
            item.PreviewMouseLeftButtonDown += OnItemPreviewMouseLeftButtonDown;
            item.PreviewMouseLeftButtonDown -= OnItemPreviewMouseLeftButtonDown;
    private static void OnItemPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        var item = sender as TreeViewItem;
        if (item == null)
            return;
        var command = GetCommand(item);
        if (command != null)
            if (command.CanExecute(item.DataContext))
                command.Execute(item.DataContext);
}

然后在XAML中使用附加属性:

代码语言: csharp
复制
<TreeView>
    <TreeView.ItemContainerStyle>
       <Style TargetType="{x:Type TreeViewItem}">
           <Setter Property="local:TreeViewItemBehavior.Command" Value="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType=TreeView}}" />
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

这样,就可以在ViewModel中处理点击事件了。

相关· 内容

WPF RadioButton 支持再次 点击 取消 选中 功能

WPF RadioButton 支持再次 点击 取消 选中 功能 让 WPF RadioButton 支持再次 点击 取消 选中 功能 一、方法一:后台直接处理 二、方法二:提取为自定义控件...,或者是设置了一个默认选中项;然后, 用户 可以在这一组单选框中切换选择其中一个,不能多选,也不能 取消 选中(也就是不能重新回到一个都没选 状态)。...可是后来需求说选中 项再次 点击 需要 取消 选中,摔!...原因就是,我们新建 那个用来记录上次选中状态 变量,在 用户 选中其它项,同时 WPF 框架自动 取消 选中本项时,没有进行记录。...可以参考我之前 翻译文章《【翻译】 WPF 中附加行为 介绍 Introduction to Attached Behaviors in WPF 》: 在一个元素上设置一个附加属性,那么你就可以从暴露这个附加属性 类中获得该元素 访问

2.1K 3 0

【翻译】 WPF 中附加行为 介绍 Introduction to Attached Behaviors in WPF

解释附加行为 概念并展示 如何 在 MVVM 模式上下文中使用它们。...本文解释了什么是附加行为,以及您 如何 WPF 应用程序中实现它们。本文 读者需要稍微熟悉 WPF 、XAML、附加属性、以及 MVVM 模式。...模式来简化 WPF TreeView )》 。...例如,假设 用户 从一个 TreeView 中搜索显示文本匹配 用户 自定义搜索字符 一项。当搜索逻辑找到一个匹配项,ViewModel 中 匹配对象会将其 IsSelected 属性设置为 true 。...这个披萨 最后一块就是看看 TreeViewItemBehavior 类 如何 获得 TreeView 每个 TreeViewItem 。

1.5K 1 0

如何 取消 计算机 用户 名,Win10 如何 取消 登录界面显示 用户 名?「建议收藏」

Win10 如何 取消 登录界面显示 用户 名?求之不得,梦寐思服。得到之后,不过尔尔!不知道您为什么求Win10 取消 登录界面显示 用户 操作方法,个人感觉,结果很令人不习惯。还不如改成直接登陆系统呢!...第一步、按Win+R组合键,呼出运行命令输入框,输入regedit后按回车键 温馨提示:如果出现 用户 账户控制提示窗口, 点击 “是”即可 第二步、在注册表编辑器窗口,依次展开并定位到如下位置:HKEY_LOCAL_MACHINE...(32位)值,双击它 第三步、在编辑DWORD(32位)值窗口,将它 数值数据修改为1,然后 点击 底部确定 第四步、将鼠标放在左侧System项上,单击鼠标右键,鼠标指向菜单中 “新建”,然后 点击 选择次级菜单中 ...(32位)值 对话框,将DontDisplayLockedUserID 数值数据修改为3,然后 点击 底部 “确定” 第六步、修改完成后,关闭注册表编辑器,按下Win+L组合键,锁定电脑,按回车键,或者使用鼠标 点击 屏幕...这时我们看到,我们 名字已经显示为“解锁电脑” 温馨提示一:要登录Win10,你需要手动输入 用户 名和密码或者PIN,因为演示计算机当前 用户 名是beihaiting,登录Win10时,将beihaiting

1.7K 1 0

【愚公系列】2023年10月 WPF 控件专题 TreeView 控件详解

欢迎 点赞✍评论⭐收藏前言 WPF 控件是Windows Presentation Foundation( WPF )中 基本 用户 界面元素。它们是可视化对象,可以用来创建各种 用户 界面。... WPF 控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供 内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是 WPF 中常见 标准 用户 界面元素。...一、 TreeView 控件详解 WPF TreeView 控件是用于显示分层数据结构 控件,通常用于展示树形结构。...组织架构图—— TreeView 控件可以展示组织架构图,比如公司 部门、职位等层级关系。菜单下拉列表—— TreeView 控件可以作为菜单下拉列表 一种实现方式, 用户 可以通过 点击 树节点来选择不同 选项。...多层级分类展示—— TreeView 控件可以用来展示多层级分类,比如商品分类、新闻分类等。 用户 可以通过 点击 树节点来查看对应 子分类或者文章详情。

685 0 0

C# WPF MVVM项目实战(进阶②)

这篇文章还是在之前用Caliburn.Micro搭建好 框架上继续做 开发,今天主要是增加了一个 用户 窗体ImageProcessView,然后通过 Treeview 切换选择项之后在界面显示不同效果 图片...> 后台代码,重点是 如何 获取当前选择 Item: public void item_SelectedItemChanged(object sender, RoutedEventArgs...Visibility属性: WPF Visibility属性是个枚举变量,有三种值:Collapsed、Hidden、Visible。...# WPF MVVM项目实战(进阶①) C# WPF 框架Caliburn.Micro入门实例1 C# 项目实战(经典) 项目源码网盘下载地址 链接:https...://pan.baidu.com/s/1uP1Lw96Br1csLaF4B7ZKpw 提取码: 右下角 点击 再看或者转发,超过20个以后我会在留言区公布!

1.3K 2 0

精通 WPF UI Virtualization

(这一点好像在 WPF 3.5 SP1 后有所改善?) WPF 3.5 SP1 以前 TreeView 是不支持 UIV 。...而分组后 控件中每一个组 GroupItem 其实就是一个 Item,这时,如果继续使用 Scroll by Item 模式,将会得到非常差 用户 体验,所以 MS 决定不支持分组后 UIV,ListBox...》、《Part III》,最后一篇说明了在 如何 使用 ListBox 模拟一个 TreeView ,这样,由于 ListBox 本身支持 UIVirtualization,所以最后 TreeView ”...上被我们系统选择来实现 TreeGrid 控件 资源:《A Versatile TreeView for WPF 》。...MS 自己 相关资源: 《MSDN Control Performance》、《How to: Find a TreeViewItem in a TreeView 》( 如何 在 UIV 情况下找到控件)、

2.4K 9 0

前端 如何 提高 用户 体验:增强可 点击 区域 大小

必生这种情况是因为可 点击 区域未应用于整个元素。 为了更加清楚,请参见下图,左图可 点击 区别(圈红部分)明显比右图 小很多,所以右图 实现 用户 体验会更好。 ?...对于本文,会介绍一些事例,并通过事例演示 如何 增加可 点击 区别,提高 用户 体验。...举个例子,在WCAG准则2.3.2中规定:网页不包含任何闪光超过3次/秒 内容。 用户 应该能够使用台式机/笔记本电脑上 键盘以及移动设备或平板电脑上 触摸屏来操作输入。...在下面的图中,我模拟了两个按钮 不同情况。在左侧,按钮更小,更远, 用户 需要更多 时间与它互动。在右侧,按钮大小更大,更接近于它 同级输入元素,这将使交互更容易、更快。 ?...复选框和单选按钮 当存在复选框或单选按钮元素时,我希望可以单击它或关联 标签来激活/禁用它。 从 用户 体验 角度来看,这是难以访问和糟糕

4.8K 2 0

如何 取消 网站备案 取消 网站备案 流程

当网站经营了一段时间以后,网站 经营者不想使用网站,想要将网站关停,而网站关停后需要 取消 网站备案,以此避免后续 相关问题。然而大多数 站主在关闭网站后,并不知道 如何 取消 网站备案?...那么接下来就给大家介绍一下网站关停后 如何 取消 备案 方法。 如何 取消 网站备案 当网站经营了一段时间以后,网站 经营者不想使用网站,想要将网站关停,而网站关停后需要 取消 网站备案,以此避免后续 相关问题。...然而大多数 站主在关闭网站后,并不知道 如何 取消 网站备案?那么接下来就给大家介绍一下网站关停后 如何 取消 备案 方法。 如何 取消 网站备案 如何 取消 网站备案?... 取消 网站备案 流程 在 取消 网站备案之前,首先要检查自己 网站是否备案,如果之前没有备案过,那么可以按照 取消 网站备案 正常流程进行 取消 ,若是之前备案过,但是网站处于关闭无法打开 情况下,且主体下有且只有一个已经备案过 域名...以上就是关于 如何 取消 网站备案 相关操作与流程。

29.1K 2 0

怎样把 取消 订阅 用户 吸引回来

在「 如何 留住你 产品 用户 」一文中,我 同事 Danielle Stein 讨论了 如何 吸引 用户 ,这样他们就不会流失了。但是,我肯定很大一部分 开发者知道, 用户 流失是客观存在 。...Google Play 研究显示,那些赢回 用户 方式更多地只是一种呼吁,因为,他们没有准确定位 用户 取消 订阅 特殊原因,他们没有做假设。比如,不要假设价格是 用户 取消 唯一原因,想当然地提供一个折扣。...有些 用户 取消 原因可能是他们觉得内容不够新,如果你能向他们展示你添加 新内容,可能更有说服力。 给 用户 一个选择不同方案 机会。 有时候一个 用户 想要 取消 ,可能是因为他们当前 购买方案和需求不相匹配。...终极吉他 使用实时 用户 通知工具来感知 用户 何时 取消 了订单。随后,他们会联系 取消 用户 并提供他们几个星期 免费服务,原因是一些 用户 提出 问题,比如产品不稳定。...关于怎么把订阅者吸引回来, 如何 防止 用户 流失,你有其他想法吗?哪种方法最适合你?

2.2K 4 0

Android模拟 用户 点击 实现方法

前言 Android模拟 用户 点击 。在自动化测试中可使用 工具。 可以利用adb命令,也可以使用Android SDK中 monkeyrunner工具。...<key code number or name input tap <x <y input swipe <x1 <y1 <x2 <y2 keyevent指的是android对应 keycode...,比如home键 keycode=3,back键 keycode=4 tap是touch屏幕 事件,只需给出x、y坐标即可 swipe模拟滑动 事件,给出起点和终点 坐标即可 编写一个bat脚本,模拟 用户 滑动...若当前打开 是第三方app,会直接报错,获取不到相应信息 以上就是这篇文章 全部内容了,希望本文 内容对大家 学习或者工作具有一定 参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn... 支持。

2.4K 2 0

dotnet 7 已知问题 WPF TreeView 开启虚拟化之后只显示首项

本文记录 WPF 在 dotnet 7 一个已知问题,此问题当前已修复,只需更新 SDK 或运行时即可。使用 TreeView 在开启虚拟化之后只显示首项,其他项不显示。...本文将告诉大家此问题 原因和修复方式 先来看看问题 动态图片 此问题影响 不仅仅只是 TreeView 开启虚拟化 情况。...: https://github.com/dotnet/ wpf /issues/7321 此问题 修复地址: https://github.com/dotnet/ wpf /pull/7426 问题 原因是在...使用引用相等判断,要求传入 对象是引用相等 ,才能返回 true 值。...而 Equals 是对象逻辑相等判断,只要逻辑上是等价 ,如重写 Equals 方法,根据一定 规则返回 true 值,那将返回相等 这就导致了在判断后续项 时候,判断逻辑行为变更,而且判断逻辑不符合预期

683 5 0

WPFC#: 如何 显示具有层级关系 数据

WPF 中我们该 如何 显示这种具有层级关系 数据呢? 今天给大家介绍 是用 TreeView 与HierarchicalDataTemplate进行显示。...它允许您定义 如何 呈现包含子项 数据对象。 通过HierarchicalDataTemplate,您可以指定一个模板,用于呈现数据对象本身,以及一个模板,用于呈现其子项。...这使得在 TreeView 等控件中轻松显示复杂 数据结构,如文件夹和文件、组织架构等。...查看实现效果 最后实现 效果如下所示: 在日常开发过程中,我们可能也会有显示层级数据 需求,本文通过一个简单 Demo,介绍了在 WPF 中通过 TreeView 控件与HierarchicalDataTemplate...希望对正在学习 WPF 或者对 WPF 感兴趣 同学有所帮助。

146 1 0

WinForm TreeView 一点用法

TreeView 一般都包含父节点和子节点,常规情况下有以下几种情况: 1.选中父节点之后,该父节点下面的所有子节点都被选中, 取消 选择父节点,则该父节点下面所有的子节点全部跟着 取消 选择。...3.如果某一个父节点下面最后一个处于选中 子节点被 取消 选中的话(这句话貌似有点绕口),该父节点也要处于 取消 选中 状态。...tvFunction.EndUpdate(); 关于第4个问题,我遇到 情况是这样 ,在权限设置里面我想在窗体Load 时候将所有的菜单组以及对应 子菜单都加载到树上面来,当我 点击 不同 角色 时候自动显示对应 权限...,比如,我 点击 Administrator”,则 TreeView 上面的所有菜单组以及子菜单全部都勾选上,如果我 点击 “普通 用户 ”,则那些系统设置相关 内容都不勾选,这就是需求,下面我们来看看 如何 实现这个需求...: 首先,我根据不同 角色返回了一张表或者是一个集合,当 用户 点击 角色名称 时候就已经获取到了这个表或者集合,我们要做 就是匹配界面上面 TreeView 里面的所有节点和返回来 那一张Table或者集合,如果能够完全匹配

1.3K 1 0

如何 优雅 取消 协程 ?

继续阅读下面的内容,来了解关于协程 取消 来龙去脉。 如果你更倾向于视频,可以 点击 下面的链接观看 Manuel Vivo 和我在 KotlinConf’19 上 演讲。...有的时候你可能仅仅只需 取消 一个协程,例如响应 用户 输入。job1.cancel 可以确保只有特定 协程被 取消 ,而其他 不受影响。...详见下面的 处理协程 取消 带来 副作用 章节。 实际上,子 Job 通过异常机制来通知父亲它 取消 。父亲通过 取消 原因来决定是否处理异常。...如果你使用自己定义 协程作用域,请绑定 Job 并在适当 时候 取消 它。 协程 取消 需要代码配合实现,所以确保你在代码中检测了 取消 ,以避免额外 无用工作。 但是,在某些工作模式下,任务不应该被 取消 ?...那么,应该 如何 实现呢,请等待该系列第四篇文章。

1.4K 3 0

WPF 非客户区 触摸和鼠标 点击 响应

默认在 WPF 里面是不响应非客户区 鼠标事件,但响应触摸事件 在没有喝下午茶 时候 lsj 告诉我,在项目里面在一个定制 窗口里面的非客户区用鼠标 点击 不了一个按钮,但是用触摸可以 点击 按钮。...本金鱼一开始认为这是之前修复 问题,但是作为金鱼已经不记得是怎么修了,为了让本金鱼下次遇到触摸或鼠标问题 时候可以解决,于是写了这个博客 本文将会告诉大家在 WPF 里面关于非客户区 触摸和鼠标 点击 响应...支持继承,也就是可以在窗口设置,这样所有在窗口里面的按钮都支持在标题栏 点击 如何 开启 Pointer 消息请看 win10 支持默认把触摸提升鼠标事件 打开 Pointer 消息 我和 lsj 使用...spy++ 知道在 WPF 标题栏 点击 时候是可以收到 Windows 鼠标消息,也就是这里是 WPF 处理 我和 lsj 说也许是之前 WPF 框架 大佬写 时候还不知道有触摸,于是处理了鼠标事件...现在 lsj 正在看 WPF 源代码,想要找到是 如何 让标题栏支持触摸但是不支持鼠标 点击 WPF 下,可以在非客户区 触摸拖动 时候,同时触发触摸拖动和窗口拖动。

1.3K 2 0

手机端CSS :hover 点击 后返回无法 取消 解决方法

今天写项目时遇到一个问题,设置 :hover 属性 链接, 点击 后或者 点击 进入下一个页面返回依旧是 :hover 状态。 ?...我们可以使用 :active 属性来解决: a:active{     background: #f2f2f2; a:link 英文link就是链接 意思,代表当一段文本为链接时 属性。...a:visited 英文visited就是访问过 意思,代表这段文本被 点击 之后 属性。 a:hover 英文hover就是悬停 意思,代表鼠标指针放在这个链接上时 属性。...a:active 英文active就是有效 、快速 意思,代表鼠标按下时一瞬间 属性。 a:focus 英文active就是聚焦 意思,代表元素获得焦点时向元素添加特殊 样式。...声明:本文由w3h5原创,转载请注明出处:《手机端CSS :hover 点击 后返回无法 取消 解决方法》 https://www.w3h5.com/post/353.html

3.7K 1 0
 
推荐文章