当前位置: 首页 > wzjs >正文

wordpress 页面模板 不显示山东济南网站制作优化

wordpress 页面模板 不显示,山东济南网站制作优化,中国冶金建设协会网站,广西安策企业管理咨询有限公司文章目录 前言1.剪贴板功能演示2. 功能说明2.1 框选效果2.2 复制2.3 剪切2.4 粘贴2.5 删除2.6 键盘快捷键支持2.7 多语言支持2.8 跨应用程序支持 3.如何获取 前言 在WPF中,ListBox、ListView和DataGrid等控件原生不支持直接通过剪贴板批量操作数据(复制…

文章目录

  • 前言
  • 1.剪贴板功能演示
  • 2. 功能说明
    • 2.1 框选效果
    • 2.2 复制
    • 2.3 剪切
    • 2.4 粘贴
    • 2.5 删除
    • 2.6 键盘快捷键支持
    • 2.7 多语言支持
    • 2.8 跨应用程序支持
  • 3.如何获取


前言

在WPF中,ListBox、ListView和DataGrid等控件原生不支持直接通过剪贴板批量操作数据(复制、剪切、粘贴),为了可以在不同的项目中复用剪贴板操作,我们可以将这个功能进行封装,这样我们就可以在新的项目中快速移植剪贴板功能。


1.剪贴板功能演示

在这里插入图片描述

2. 功能说明

2.1 框选效果

定义一个名为SelectorExtension静态扩展类,并 在该类中新建一个名为IsEnableDragSelection的附加属性,在属性的PropertyChangedCallback中订阅控件的鼠标按下、移动、松开事件,在事件处理方法中获取到鼠标的坐标及状态,并用装饰器添加框选效果。

2.2 复制

新建一个名为IsEnableCopy的附加属性,在属性的PropertyChangedCallback中获取到MenuItem,并为MenuItem添加ApplicationCommands.Copy命令绑定,然后实现复制功能。

命令绑定关键代码:

menuItem.Command = ApplicationCommands.Copy;
selector.CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy, CopyCmdExecuted, CopyCmdCanExecuted));

复制功能关键代码:


var copyingItems = new List<string>();
foreach (var item in selectedItems)
{if (item is ICloneable obj){copyingItems.Add(JsonSerializer.Serialize(obj.Clone()));}else{copyingItems.Add(JsonSerializer.Serialize(item));}
}
Clipboard.SetText(string.Join(Environment.NewLine, copyingItems));

2.3 剪切

新建一个名为IsEnableCut的附加属性,在属性的PropertyChangedCallback中获取到MenuItem,并为MenuItem添加ApplicationCommands.Cut命令绑定,然后实现剪切功能。

命令绑定关键代码:

menuItem.Command = ApplicationCommands.Cut;
selector.CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut, CutCmdExecuted, CutCmdCanExecuted));

剪切功能关键代码:

var removeItems = new List<object>();
var cuttingItems = new List<string>();
foreach (var item in selectedItems)
{removeItems.Add(item);cuttingItems.Add(JsonSerializer.Serialize(item));
}
Clipboard.SetText(string.Join(Environment.NewLine, cuttingItems));
foreach (var item in removeItems)
{if (items.Contains(item)){items.Remove(item);}
}

2.4 粘贴

新建一个名为IsEnablePaste的附加属性,在属性的PropertyChangedCallback中获取到MenuItem,并为MenuItem添加ApplicationCommands.Paste命令绑定,然后实现粘贴功能。

命令绑定关键代码:

menuItem.Command = ApplicationCommands.Paste;
selector.CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste, PasteCmdExecuted, PasteCmdCanExecuted));

粘贴功能关键代码:

var clipboardObjects = GetClipboardObject(selector);
if (clipboardObjects != null)
{var selectedItems = selector.GetSelectedItems();if (selector.ItemsSource is IList items){var length = selectedItems.Count;if (length == 0){// 未选中foreach (var clipboardObject in clipboardObjects){items.Add(clipboardObject);selectedItems.Add(clipboardObject);}}else{// 已选中               int index = items.IndexOf(selectedItems[length - 1]);selectedItems.Clear();foreach (var clipboardObject in clipboardObjects){items.Insert(index, clipboardObject);selectedItems.Add(clipboardObject);index++;}}}
}

2.5 删除

新建一个名为IsEnableDelete的附加属性,在属性的PropertyChangedCallback中获取到MenuItem,并为MenuItem添加ApplicationCommands. Delete命令绑定,然后实现删除功能。
命令绑定关键代码:

menuItem.Command = ApplicationCommands.Delete;
selector.CommandBindings.Add(new CommandBinding(ApplicationCommands.Delete, DeleteCmdExecuted, DeleteCmdCanExecuted));

删除功能关键代码:

var selectedItems = selector.GetSelectedItems();
if (selector.ItemsSource is IList items &&selectedItems != null &&selectedItems.Count > 0)
{var removeItems = new List<object>();foreach (var item in selectedItems){removeItems.Add(item);}foreach (var item in removeItems){if (items.Contains(item)){items.Remove(item);}}
}

2.6 键盘快捷键支持

以上代码支持键盘组合键Ctrl+C(复制)、Ctrl+X(剪切)、Ctrl+V(粘贴)、Delete(删除)。

2.7 多语言支持

以上代码支持自动语言切换。

2.8 跨应用程序支持

使用Json转换对象,剪贴板中存储的是Json字符串,可以支持跨应用程序复制粘贴。

3.如何获取

完整源代码已经上传到群(661224882)文件,如有需要,请自行获取。

技术赋能,共创未来
我们是一支深耕WPF及Avalonia十余年的开发团队,专注于为企业和开发者提供高性能桌面应用解决方案,目前已经为二十多家企业提供过服务,无论您是哪种需求,我们都可以用我们丰富的经验助力您的业务高效落地。如果您有相关需求,请与我们联系。

联系方式
QQ/VX:446522563
手机号:17898179019

技术交流
QQ群:661224882
在这里插入图片描述

http://www.dtcms.com/wzjs/830623.html

相关文章:

  • 记事本做网站代码手机网站设计咨询
  • 网站建设征求意见分析报告机关网站建设管理工作总结
  • 青海网站如何建设深圳关键词优化平台
  • 南昌网站页面优化江西网站设计哪家好
  • 3建设营销型网站流程图北京外语网站开发公司
  • 5118网站如何使用免费版企业做网站的好处有哪些
  • 哈尔滨网站建设教学网站开发答辩ppt
  • 互联网站管理工作细则新网站建设验收
  • 网站网页设计海报图片沈阳智能模板建站
  • 网络建站流程网站 建设 语言
  • 网站建设知名企业网站栏目怎么做301定向
  • 重庆网站制作机构万虹点读机如何做系统下载网站
  • 网广州建网站站制作宁波网站建设费用
  • 品牌营销策划网站电子商务网站建设简答题
  • 手机网站建设的方法wordpress收件邮箱
  • 合肥网站建设博客ftp如何转换wordpress
  • 成都网站建设seo优化百度安装免费下载
  • 织梦网站怎么上传视频插件 wordpress开发教程
  • 网站申请注册 免备案毕业设计做网站还是系统
  • 菏泽市建设局网站抖音品牌推广方案
  • 设计营销型网站域名个人网站需不需要搭建服务器
  • 重庆市城市建设综合开发办网站wordpress 主题全屏
  • 上海建设银行青浦分行网站dedecms网站后台
  • 做深圳门户网站起什么名字好平面设计好找工作不
  • 上海专业建设网站网络促销策略
  • 网站建设需要摊销几年网站建设有技术的公司
  • 建湖做网站需要多少钱做游戏都需要什么网站
  • 郑州七彩网站建设公司 评论用来做视频连接的网站
  • 制作软件网站如何建立门户网站
  • 西安网站制作顶尖网页开发工资高吗