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

WPF GridView/ListView在触控设备上用手指更改列宽

WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的UI框架。GridView和ListView是WPF中常用的数据展示控件,用于以表格或列表形式展示数据。

在触控设备上使用手指更改列宽是一种常见的交互需求,可以通过以下步骤实现:

  1. 启用触控支持:在WPF应用程序的启动代码中,需要启用触控支持。可以通过在App.xaml.cs文件的构造函数中添加以下代码实现:
代码语言:txt
复制
TouchPanel.SetIsTouchEnabled(Application.Current, true);
  1. 设置列宽可调整:默认情况下,GridView和ListView的列宽是固定的,需要将列的CanUserResize属性设置为True,以允许用户调整列宽。例如:
代码语言:txt
复制
<ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Column 1" Width="100" CanUserResize="True"/>
            <GridViewColumn Header="Column 2" Width="100" CanUserResize="True"/>
        </GridView>
    </ListView.View>
</ListView>
  1. 实现列宽调整:WPF中没有直接支持手指调整列宽的内置功能,但可以通过自定义行为或使用第三方库来实现。以下是一种简单的实现方式:
代码语言:txt
复制
public class ColumnResizeBehavior : Behavior<GridViewColumnHeader>
{
    private bool isResizing = false;
    private double originalWidth;
    private double originalPosition;

    protected override void OnAttached()
    {
        base.OnAttached();
        AssociatedObject.PreviewMouseLeftButtonDown += AssociatedObject_PreviewMouseLeftButtonDown;
        AssociatedObject.PreviewMouseMove += AssociatedObject_PreviewMouseMove;
        AssociatedObject.PreviewMouseLeftButtonUp += AssociatedObject_PreviewMouseLeftButtonUp;
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
        AssociatedObject.PreviewMouseLeftButtonDown -= AssociatedObject_PreviewMouseLeftButtonDown;
        AssociatedObject.PreviewMouseMove -= AssociatedObject_PreviewMouseMove;
        AssociatedObject.PreviewMouseLeftButtonUp -= AssociatedObject_PreviewMouseLeftButtonUp;
    }

    private void AssociatedObject_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        isResizing = true;
        originalWidth = AssociatedObject.Column.ActualWidth;
        originalPosition = e.GetPosition(AssociatedObject).X;
        AssociatedObject.CaptureMouse();
    }

    private void AssociatedObject_PreviewMouseMove(object sender, MouseEventArgs e)
    {
        if (isResizing)
        {
            double delta = e.GetPosition(AssociatedObject).X - originalPosition;
            double newWidth = originalWidth + delta;
            if (newWidth > 0)
            {
                AssociatedObject.Column.Width = newWidth;
            }
        }
    }

    private void AssociatedObject_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        isResizing = false;
        AssociatedObject.ReleaseMouseCapture();
    }
}

使用该行为,可以将其附加到GridViewColumnHeader上,以实现手指调整列宽的功能。例如:

代码语言:txt
复制
<ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumn.Header>
                    <GridViewColumnHeader Content="Column 1">
                        <i:Interaction.Behaviors>
                            <local:ColumnResizeBehavior/>
                        </i:Interaction.Behaviors>
                    </GridViewColumnHeader>
                </GridViewColumn.Header>
                <!-- 列的内容 -->
            </GridViewColumn>
            <!-- 其他列 -->
        </GridView>
    </ListView.View>
</ListView>

请注意,上述代码中的locali是命名空间别名,需要根据实际情况进行调整。

以上是在WPF中使用手指更改列宽的基本步骤和示例代码。对于更复杂的交互需求,可能需要进一步的定制和扩展。腾讯云提供了一系列云计算产品,如云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品进行开发和部署。具体产品介绍和文档可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果

在想要给 ListView 添加一个表头,同时想要这个 ListView 没有美工小姐姐的帮助下也能看起来比较好看,此时就特别适合使用 HandyControl 库 大概做出来的效果如下 ?...> 此时可以尝试运行一下应用,如果和我写得一样,那么可以看到上图的界面 上面代码使用 GridView...这部分请看 WPF 控件【L】ListView(三) ListView+GridView+GridViewColumn+DisplayMemberBinding多绑定数据的用法_xpj8888的博客-...CSDN博客_wpf gridview 如果只是需要简单的定制,如修改颜色等,可以通过重写资源字典的方式更改 ListView 定义资源名是 RegionBrush 就可以更改列表项的颜色,而通过定义 PrimaryTextBrush

3.6K20
  • WPF 列表右键菜单比较符合 MVVM 的命令绑定方法

    > 而此时如果我想要先获取所点击的 GridView 是哪一行,然后弹出右键菜单,设置对应的属性,此时的代码逻辑相对来说很复杂 WPF 如此优秀的框架里面怎么也需要提供更清真的方法...?...每一个 GridView 的 Row 项里面都会使用 ListView 的 ItemSource 的数据的某一项,而咱按照 MVVM 的思想,应该变更的是数据而不是界面本身 而 DataContext...通过绑定的方法和 DataContext 是视觉树继承的,就可以做到自动拿到当前的右击项的数据,传到后台方法 本文的更改放在 github ,小伙伴可以通过对比更改内容,就能知道本文修改的代码 如果在右击的本身是需要修改...ListViewItem 的界面的,如果这个界面更改和数据无关,那么可以通过修改 Style 的方法修改界面,而不是通过后台代码修改属性的方式 上面的代码我实际的测试项目里面是存在一定的更改,本文的代码只是给大家演示

    3K20

    WPF Binding学习(四) 绑定各种数据源

    ListView是ListBox的派生类,而GridView是ViewBase的派生类,ListView中的View是一个ViewBase对象,所以,GridView可以做为ListView的View来使用而不能当作独立的控件来使用....ItemsSource = list; 只需构造函数中创建对象并绑定到ListView即可,然后运行就可以看到已经绑定完毕 ?    ...2.ADO.NET中DataTable对象做为数据源     wpf中,是允许将DataTable直接做为Binding的数据源的,下面以一个例子做为参考    控件还可以用上面的控件,只需该数据源即可...>  我们只需更改数据源即可 List stus...有些时候我们不能确定作为Source对象叫什么名字,但是我们知道它与做为Binding目标对象UI的相对关系,比如控件自己关联自己的某个数据,关联自己某级容器的数据,这时候就需要用到Binding的

    4.3K30

    Flutter中构建布局 顶

    第6步:把它放在一起 最后一步,你将这些碎片组装在一起。 这些小部件安排在ListView中,而不是中,因为设备运行应用程序时,ListView会自动滚动。...要在设备显示小部件,请将布局小部件添加到应用小部件。...应用程序的构建方法中声明小部件会在设备显示小部件。 对于Material应用程序,您可以将Center小部件直接添加到主页的body属性。...以下示例中,3个图像中的每一个都是100像素。 渲染框(在这种情况下,整个屏幕)宽度超过300像素,因此将主轴对齐设置为spaceEvenly每个图像之间,之前和之后均匀分配自由水平空间。...您可以通过将整个布局放入Container并更改其背景颜色或图像来更改设备的背景。

    43.1K10

    Android开发笔记(十二)测量尺寸与下拉刷新

    尺寸测量的配置 控件宽和高的设置方式 大家知道,自定义视图的目的就是要在屏幕显示期望的图案,那绘制图案之前,我们得先知道这个图案的尺寸(如多少高多少)。...平时页面打开是没有这个下拉框的,只有用户屏幕用手指向下滑动时,才会拉出这个下拉框,然后APP响应下拉事件进行刷新处理。...Android规定的测量过程中,主要有三个步骤: 1、获得与高的测量模式; 2、按照测量模式进行丈量; 3、获得测量后的与高的大小; 获得与高的测量模式 首先取到目标视图的宽和高的取值...PullToRefresh 说到下拉刷新,刚好介绍一下使用广泛的开源框架PullToRefresh,该框架支持ScrollView、ListViewGridView多种视图,也支持下拉刷新和拉加载两种模式...getRefreshableView : 获取可刷新的视图对象,如ScrollView、ListViewGridView等等,接着方可调用视图对象的相应方法,如setAdapter等等。

    1.1K40

    Android解决ScrollView下嵌套ListViewGridView中内容显示不全的问题

    最近为公司做的一个Demo里面用到了ScrollView嵌套了GridViewListView,然而在嵌套的时候我发现GridViewListView都是不能完全显示,显示的基本都是单行的数据,最后查找资料和翻阅文档看到原因是...ListViewGridView的绘制过程中ScrollView中无法准确的测量自身的高度,而且listVIewGridView抢占了焦点,使得ListView和GrideView具有自身的显示的效果...(params); } 下面是GridView的方法和ListView的测量的方法基本一样 但是listView是单行条目的不用在担心的问题问GridView则是需要进行自己分行和自己分列的...youGrideView)(这个方法能解决问题但是感觉不是很好灵活性太差 我用的获取的数始终获取不到,有看神看到了 给我回复) public void getGridViewSelfhetght(GridView...()返回数据项的数目 View listItem = adapter.getView(i, null, gridView); // 计算子项View 的

    2.4K20

    Android开发笔记(三十八)列表类视图

    下面是Spinner常用的属性和方法: xml布局的属性设置: prompt : 指定弹窗的标题视图,spinnerMode=dialog时有效。...下面是ListView常用的属性和方法: ListView的属性和方法 xml布局的属性设置: divider : 指定分隔线的图形。...下面是GridView常用的属性和方法: xml布局的属性设置: horizontalSpacing : 指定子视图水平方向的间距。...取值说明如下:none表示不做拉伸;columnWidth表示若有空余空间,则拉伸与宽大小一致;spacingWidth表示若有空余空间,则不变,把空余分配到每间的空隙;spacingWidthUniform...与spacingWidth的区别在于,Uniform方式左边和右边都补上空隙(即每行开头和末尾都补空隙),而spacingWidth每行开头和末尾不补空隙,只有之间才补空隙。

    2.3K20

    WPF 从触摸消息转触摸事件

    ,如WPF 触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待 和 WPF 插拔触摸设备触摸失效 等,有时候开机的过程,如果启动快了,触摸设备还没准备好,刚好在 WPF 初始化的过程 USB 触摸设备才准备好...因为希沃的设备主要是触摸屏幕,用户不会有鼠标,如果出现了初始化的过程刚好就是 USB 准备好,那么这个程序将收不到任何触摸事件 程序启动的时候,可以通过获得触摸精度和触摸点判断当前是否存在触摸设备...,如果不存在触摸设备同时判断是希沃的设备运行,那么就是触摸失效了。.../// /// 一个用于区别某个特定输入的点标识符。...此值点序列中从点下降到重新上升的整个过程中保持一致。

    1.2K20

    PDF软件Adobe Acrobat DC --最牛逼的PDF编辑器

    它包括一个移动应用程序,因此您可以在任何设备填写、签署以及共享PDF。 伴您左右的智能扫描。 将您的设备转变为具备文本识别“超能力”的免费扫描工具。...此外,您也知道,它在任何屏幕都具备合适的外观。 他们需要的工具。您需要的安全性。...Adobe Acrobat DC 2019软件功能介绍: 1、支持触摸功能的美观用户界面 支持功能且完全移动化,出色的新用户界面让所需工具触手可及; 2、随时随地工作 Acrobat DC附带了转换...PDF文件中的现有内容作为起点,就在 PDF 中进行更改,或者导出到 Microsoft Office 格式; 4、全新的注释功能 经过重新设计且适合操作的接口,可以更轻松地快速收发明确的意见响应;...,可以轻松地选择最佳的扫描选项,获得最佳效果; 7、电子签名,各种装置皆可完成 Acrobat DC将电子签名功能引进了全球10亿台以上的装置,任何人都可以触控式装置轻松用手指合法地签署文件,或是浏览器中按几下鼠标也可签署

    1.6K30

    Acrobat Pro DC for macwin(实用的PDF编辑器)

    Mac版:Acrobat Pro DC for Macwin版:Adobe Acrobat Pro DC 2022图片支持触摸功能的美观用户界面 支持功能且完全移动化,出色的新用户界面让所需工具触手可及...就在 PDF 中进行更改,或者导出到 Microsoft Office 格式。而且当然是您的计算机. 浏览器或移动设备这样做。...全新的注释功能 经过重新设计且适合操作的接口,可让您更轻松地快速收发明确的意见响应。...此外,您可以确定它在任何屏幕都能正常显示您的办公室跟您一样具备行动力 包含 Document Cloud 服务的Adobe Acrobat Pro DC 2022配备了转换....现在,任何人都可以触控式装置轻松用手指合法地签署文件,或是浏览器中按几下鼠标也可签署。该软件也可让您轻松地传送. 追踪及储存签署的文件,它不只是签署应用程序而已。

    64610

    这块板子里,塞下了两万个传感器

    Sensel Morph 内置的科技与主流数码设备的触摸屏不同,并非通过电容屏实现,当然也不是电阻屏。它采用了魔性的两万枚传感器,间距仅为 1.5 mm,支持 16 点。 ? 好处是什么?...无论是用手指还是画笔,都能用这块板子对设备进行输入。 毛笔书法、素描、打字都不在话下。更喜欢用纸吗?...那就用这个来做垫板,视频中一位画家将白纸放在 Sensel Morph 作画,纸上画完同时也生成了数字图片,堪称神同步。...如果用上 Dev.Cable 连接到 Aduino ,更是可以接入无数的开源硬件扩展功能(例如 DJ)。 打字的时候,触摸板没有反馈,会有种敲桌子的感觉,手感应该与新 Macbook 键盘类似。

    40540

    Acrobat Pro DC 2022 for Mac(专业PDF编辑软件)中文版

    Acrobat Pro DC 2022 for Mac图片功能特色1、支持触摸功能的美观用户界面支持功能且完全移动化,出色的新用户界面让所需工具触手可及 — Acrobat DC 是如此神奇,您会诧异过去没有它的情况下是如何完成工作的...就在 PDF 中进行更改,或者导出到 Microsoft Office 格式。而且当然是您的计算机、浏览器或移动设备这样做。...4、全新的注释功能经过重新设计且适合操作的接口,可让您更轻松地快速收发明确的意见响应。...此外,您可以确定它在任何屏幕都能正常显示8、您的办公室跟您一样具备行动力包含 Document Cloud 服务的 Acrobat DC 配备了转换、编辑及签署 PDF 所需的所有工具。...9、电子签名,各种装置皆可完成Acrobat DC 将电子签名功能引进了全球 10 亿台以上的装置。现在,任何人都可以触控式装置轻松用手指合法地签署文件,或是浏览器中按几下鼠标也可签署。

    53120

    Android开发的那些坑和小技巧

    如果你设置了此属性值为false,就能实现一个布局事半功陪的效果。先看一个效果图。 ? 上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示。 ?...GridViewListView都有可能出现,说不定这个祸首就是wrap_content。说到底是View的布局出现了问题。...一开始我用ViewPager + PhotoView(一个开源控件)显示图片,多点放大缩小时就出现了这个问题。一开始我怀疑是PhotoView的bug,找了半天无果。...基本信息和公司简介比较简单,荣誉需要用到RecyclerView和TextView的组合,RecyclerView(当然,用GridView也可以,3多行的显示)存放荣誉图片,TextView显示荣誉名称...一开始我发现一个acitivity中的scrollView滑动一顿一顿的,而实际没有嵌套任何的列表控件如ListViewGridView,包含的无非是一些TextView、ImagView等。

    1.1K30

    Flutter实现电影院选座效果!

    直接上效果图 竖屏: 横屏: 初始化自适应屏幕的放大缩小效果: 布局分析 中间的座位=>矩阵,通过Column嵌套Row实现,不能通过GridView实现(滑动冲突,下文会说明) 左侧导航条=>一个简单的...笔者在这试了很多方法: 方法一: 左侧导航栏和中间座位表均使用InteractiveViewer 然后通过InteractiveViewer的回调事件和变换器来实现效果同步 结果: 失败,transformationController...所以让左侧导航栏使用ListView,中间座位表使用InteractiveViewer嵌套GridView, 然后将ListViewGridView的ScrollController绑定在一起实现同步滚动...计算 如果有用screenUtil,以下计算注意区分横竖屏,横屏时适配结尾用.w,竖屏用.h,其中异形屏的padding不用区分横竖屏,系统会自动更改 1、整个座位表的显示区域: 屏幕高-异形屏上下padding...屏幕-异形屏左右padding-横屏时右侧悬浮框width(竖屏时悬浮框如不在右侧,则为0)- 导航条宽度(这个导航栏宽度也需要根据放大缩小倍数动态计算)-其他自己加的布局

    1.6K10

    【Flutter 专题】98 易忽略的【小而巧】的技术点汇总 (六)

    key, LayoutWidgetBuilder builder, }) : super(key: key, builder: builder); } 案例尝试 和尚通过 GridView...默认展示一行的图标,预期是大部分设备展示 4个 item,随着屏幕的变大尽可能多的展示 item,当屏幕允许展示所有 item 时为上限;于是和尚设定了单个 item 基础为 90,根据 size.maxWidth...ReorderableListView 和尚刚尝试了 Draggable + DragTarget 实现的基本的拖拽 GridView,今天尝试一下系统提供的 ReorderableListView...2. scrollDirection scrollDirection 为列表滑动方向,与普通 ListView 一致,分为 Axis.horizontal 横行和 Axis.vertical 纵向两种...注意事项 ReorderableListView 没有类似于 ListView.builder 等构造方法,需要把 List 中所有 item 一次性加载完; ReorderableListView 中所有

    70241

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    Static Resource - StaticResource 的值加载时确定Dynamic Resource - 在运行时更改属性值的情况下使用。7.WPF中控件的分类?...样式可以控件显式设置,也可以应用于所有特定类型。 控件模板可以通过样式设置或在控件显式设置以更改其显示方式。 所有控件都有嵌入 .net wpf 程序集中的默认模板(和样式)。...ListView允许指定不同的视图而不是直接列表。 可以滚动自己的视图,也可以使用 GridView(想想类似资源管理器的“详细信息视图”)。...它基本是多列表框,跟 windows 窗体列表视图的表现类似。 如果不需要 ListView 的附加功能,只是显示项目列表(即使模板很复杂),使用 ListBox就足够了。...当您在根元素设置 FontSize 时,它适用于下面的所有文本块,除非在元素中覆盖该属性值。 更改通知 依赖属性具有内置的更改通知机制。 通过属性元数据中注册回调,您会在属性值更改时收到通知。

    49422
    领券