WPF使ListBox支持手势多选功能

手势功能在手持平台应用较为丰富,PC上的应用还不是很多,不过还是有一些软件已应用这个功能如遨游浏览器等,应用得当还是相当可以丰富用户的互交体验的。

接下来我将介绍如何为ListBox添加手势功能支持。

这里我们用到了InkCanvas,它有一个Gesture事件,在这个事件中我们可以得到我们所画出的形状的区域及

e.Strokes[0].GetGeometry(),然后我们对这ListBox的这个区域做命中检查VisualTreeHelper.HitTest,从中过滤出我们想选中的多个ListBoxItem.

效果图:

代码如下:

查看XAML <InkCanvas EditingMode="None"  Grid.ColumnSpan="2" Name="m_ic" Height="350" VerticalAlignment="Top" 
                   Gesture="m_ic_Gesture">
                <ListBox Name="listBox1" SelectionMode="Extended"  Height="350" Width="780">
                    <ListBoxItem Content="Ok" />
                    <ListBoxItem Content="Maxzhang" />
                    <ListBoxItem Content="houxiaodong" />
                    <ListBoxItem Content="hao1" />
                    <ListBoxItem Content="wuhao" />
                    <ListBoxItem Content="xiaoge" />
                    <ListBoxItem Content="wefwefwefwef" />
            </ListBox>
        </InkCanvas>

        <Button Content="鼠标指针" Grid.Column="1" Height="23" 
                HorizontalAlignment="Left" Margin="9,356,0,0" Name="button1" 
                VerticalAlignment="Top" Width="75" Click="NoneMode_Click" />
        <Button Content="手势圈选" Grid.Column="1" Height="23" 
                HorizontalAlignment="Left" Margin="90,356,0,0" Name="button2" 
                VerticalAlignment="Top" Width="101" Click="SelectionMode_Click" />
        <Button Content="得到选中的项" Grid.Column="1" 
                Height="23" HorizontalAlignment="Left" Margin="600,356,0,0" Name="button3" 
                VerticalAlignment="Top" Width="97" Click="GetSelected_Click" />

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏韩东吉的Unity杂货铺

零基础入门 40:Inspector禁用RectTransform属性修改

Hello,今天给大家分享一下如何通过代码实现Inspector面板禁止修改RectTransform组件上的属性。

37520
来自专栏Porschev[钟慰]的专栏

体验vs11 Beta

第一步:下载VS11Beta 下载地址:http://www.microsoft.com/click/services/Redirect2.ashx?CR_...

21060
来自专栏Puppeteer学习

Headless Chrome:服务端渲染JS站点的一个方案【中篇】【翻译】防止重新渲染优化

25030
来自专栏程序员互动联盟

【Windows编程】系列第八篇:创建通用对话框

Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单、工具栏、状态栏以及各个控件。当然除了这些单独的...

362140
来自专栏葡萄城控件技术团队

在Silverlight中动态绑定页面报表(PageReport)的数据源

ActiveReports 7中引入了一种新的报表模型——PageReport(页面布局报表),这种报表模型又细分了两种具体显示形式: o    固定页面布局...

19990
来自专栏IMWeb前端团队

微型UI库Riot介绍

本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 定义 Riot:类似 React 的微型 UI 库 特点: 自定义标签 快速...

21490
来自专栏谭伟华的专栏

文件上传那些事儿

最近把产品目前使用的FileUploader从老的组件库分离出来的,自己也查阅了相关的各种资料,对文件上传的这些事有了更进一步的了解。

7K40
来自专栏zingpLiu

配置文件热加载的go语言实现

通常我们更新应用程序的配置文件,都需要手动重启程序或手动重新加载配置。假设一组服务部署在10台机器上,你需要借助批量运维工具执行重启命令,而且10台同时重启可能...

12420
来自专栏c#开发者

Asp.net dynamic Data web Site 之二创建第一个Web Site

Asp.net dynamic Data web Site 之二创建第一个Web Site 本专题介绍一个ASP.NET动态数据的网站的布局,其中包括这些文件...

46460
来自专栏QQ音乐技术团队的专栏

使用 Jest 进行前端单元测试

目前 Jest 已经在 Facebook 开源的 React, React Native 等前端项目中被做为标配测试框架。下面简单介绍一些 Jest 比较有用的...

1.1K90

扫码关注云+社区

领取腾讯云代金券