WPF使用DEV之TreeListControl---右键功能菜单

在树中右键效果如图:

实现如下:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
之前发布的作废,这是从老外的源码转换过来,并进行了扩展: 1>添加了水平和垂直网格线 2>添加了MVVM 3>添加了UI虚拟化的支持 4>支持自动填充列和最小宽度列 5>可绑定到Datatable,从而进行编辑操作 6>可装载海量数据,单层数据超过1W,瞬间完成,50W数据的滚动不卡顿 7>集成到ComboBox中 8>有两个主题,一个有类似传统的有折叠连接线的主题,另一个是当下的。 个人比较喜欢有折叠连接线的,结构可以更清晰。 特别强调一点:在海量数据的情况下,如果虚拟化UI开启,在展开大量数据的情况下,执行滚动操作可能导致程序假死,原因不明,希望有人能找到原因,并能告知!另外对于系统自带的TreeView测试发现,如果展开第二层,该层数据量很大,拖放也很卡,但DataGrid却非常顺滑,怀疑微软对层次结构的UI虚拟化仍没做好。 另外就个人感觉在目前的电脑配置下,UI虚拟化可以显著提高数据的加载速度,但一旦数据已加载后,执行拖放操作时,顺滑程度远不于非虚拟化的情况,原因也很简单,只要内存还够用,UI已加载的拖放肯定比UI虚拟的拖放好。 这次针对之前的发布主要在于完全取消了虚拟化,因为虚拟化会导致在大数据下滚动的卡死,垂直网格线不随滚动条滚动等各种意外的问题。 另外与树有关的: WPF TreeView的横向排布风格20170722(带动画) http://download.csdn.net/detail/maiker/9907400 Email: [email protected]
使用 MVVM 模式实现 WPF ListBox 的右键菜单功能,可以按照以下步骤进行: 1. 在 ViewModel 中创建一个 ICommand 属性,用于处理右键菜单命令,例如: ``` public ICommand ContextMenuItemCommand { get; set; } ``` 2. 在 ViewModel 的构造函数中初始化 ContextMenuItemCommand 属性,并定义命令执行的方法,例如: ``` public ViewModel() { ContextMenuItemCommand = new RelayCommand<string>(ExecuteContextMenuItemCommand); } private void ExecuteContextMenuItemCommand(string command) { switch (command) { case "Copy": // 处理复制命令 break; case "Cut": // 处理剪切命令 break; case "Paste": // 处理粘贴命令 break; default: break; } } ``` 3. 在 XAML 中将 ContextMenuItemCommand 属性绑定到 ListBox 控件的 ContextMenu 中的 MenuItem 控件的 Command 属性,例如: ``` <ListBox> <ListBox.ContextMenu> <ContextMenu> <MenuItem Header="复制" Command="{Binding ContextMenuItemCommand}" CommandParameter="Copy" /> <MenuItem Header="剪切" Command="{Binding ContextMenuItemCommand}" CommandParameter="Cut" /> <MenuItem Header="粘贴" Command="{Binding ContextMenuItemCommand}" CommandParameter="Paste" /> </ContextMenu> </ListBox.ContextMenu> </ListBox> ``` 4. 运行程序并在 ListBox 上右键单击以查看菜单。 这样,当用户在 ListBox 上右键单击时,将会显示一个包含复制、剪切和粘贴菜单项的上下文菜单,并且当用户选择其中的菜单项时,会触发 ViewModel 中定义的 ContextMenuItemCommand 命令,并执行相应的命令处理方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值