wpf实现可编辑listview

来源:互联网 发布:2016年最流行的网络词 编辑:程序博客网 时间:2024/04/23 16:06

本篇实现了wpf的listview在item中通过与TextBox的绑定完成列表的可编辑功能。网上找了一些方法最终发现msdn提供的一套方案比较好,就在基础上做些修改,使得TextBox长度改变更加流畅及UI与数据源的双向更新。

         原下载地址:https://msdn.microsoft.com/zh-cn/library/ms771277.aspx

         这里首先在editboxadorner中增加_initWidth用来初始化宽度(xaml设定的Width),用它来解决Adorner太小造成的可点击区域太小,太大造成的文字显示不全。

         接下来构造函数中增加参数doubleinitWidth用来接收editbox中传递的宽度,并赋值给_initWidth。

         然后修改MeasureOverride,该函数属于虚函数,用来重写绘制的长度。

double width =AdornedElement.DesiredSize.Width + _extraWidth;

if (width < _initWidth +_extraWidth)

   width =_initWidth + _extraWidth;

return newSize(width,_textBox.DesiredSize.Height);

         之所以这样写是由于显示会比数据长度慢一拍。

在editbox生成_adorner中把自定义控件宽度传进去。_adorner= new EditBoxAdorner(textBlock,_textBox,this.Width);

 

         至于绑定和方法处理代码很详细,这里这说下修改的地方。这里在分别在绑定的两处增加Mode=TwoWay,这样就可以双向更新了,绑定时增加默认Width可根据情况调整。不然改变控件中数值实际上数据源中数据并没有改变。支持,点击ID项就可以进行修改了,为了测试数据源跟随变化增加了测试按钮。

以下是修改后源代码:http://download.csdn.net/detail/u011736517/9925688

2 0