.net4.5 wpf flexgrid 的列宽拉伸
使用.net4.5 wpf flexgrid显示数据后,鼠标单击列边框(想手动拉伸列宽),实际效果是列宽会自动变窄,无法拉伸列宽;(flexgrid使用默认属性)请问该问题需如何解决?
用下面的代码可以规避这个问题,但是,肯定还会有其他的问题,
比如:列无法被拖动交换顺序,无法选中flexgrid单元格区域等
if (e.LeftButton == MouseButtonState.Pressed&& Flexgrid.Cursor!= Cursors.SizeWE)
{
if (position.X >= 0 && position.Y >= 0 && position.X < this.ActualWidth && position.Y < this.ActualHeight)
{
this.DragMove();
}
}
另外关于你自适应列宽的问题,可以用下面的代码
Flexgrid.AutoSizeColumns(0, Flexgrid.Columns.Count, 1);
Flexgrid.AutoSizeColumn(0, 0); 目前的行为是双击列头的边框时,会自动对列宽进行调整,也就是你说的自动变窄
但是单击时不会,单击时是可以正常拖动列宽的
如果你这边确实是单击就自动调整了列宽,建议可以做一个简单的重现问题的demo上传上来,我协助你看一下原因 Richard.Ma 发表于 2022-4-11 15:53
目前的行为是双击列头的边框时,会自动对列宽进行调整,也就是你说的自动变窄
但是单击时不会,单击时是可 ...
我现在排查出来的差异点是,wpf的window窗体定义了“MouseLeftButtonDown”的事件处理程序时,就会出现上述问题,把自定义的事件处理代码删除后,就可以进行列宽的拉伸;这个问题可以规避掉吗? Immortals 发表于 2022-4-11 16:36
我现在排查出来的差异点是,wpf的window窗体定义了“MouseLeftButtonDown”的事件处理程序时,就会出现上 ...
这是 MouseLeftButtonDown 的事件处理代码;
我看你这个本意是要写一个标题栏内允许拖拽,但是你这个代码应该是包含了整个的窗口位置了吧,
你这边实际的需求就是要在flexgrid的标题栏来拖动窗口移动吗?还是指的是窗口的标题栏
Richard.Ma 发表于 2022-4-11 17:43
我看你这个本意是要写一个标题栏内允许拖拽,但是你这个代码应该是包含了整个的窗口位置了吧,
你这边实际 ...
我window窗体的window style设置为none,窗体是无法被移动的,所以需要定义“MouseLeftButtonDown”的处理事件来实现窗体的移动。
我的需求只是flexgrid显示数据,列宽可通过鼠标进行拉伸的功能,但是flexgrid控件布局在一个定义了“MouseLeftButtonDown”处理事件的窗体中,就无法实现这个拉伸功能。 Immortals 发表于 2022-4-11 18:02
我window窗体的window style设置为none,窗体是无法被移动的,所以需要定义“MouseLeftButtonDown”的处 ...
这是问题复现的一个demo;
好的,我明天验证一下,然后给你回复
页:
[1]