wpf实现可编辑listview二(通过委托回调自定义控件消息)
上篇通过自定义listview子项模版完成了可编辑的listview。这里为了解决一个问题(编辑完成后通知已经完成,方便同一时间数据保存或者更新)继续对源码进行修改。
这里首先想到的就是委托,使用委托比发送命令更加容易多处扩展。这里仍然只说修改的地方。
源码中editbox已经注册了消息“IsEditing”用于修改传入的数值。这里定义成员变量_useEditMessageChanged,为了标示当前是否可以调用委托消息防止同一操作多次调用。当设置为非编辑状态时就设置可以调用委托消息。另外在源码中所有IsEditing = false赋值语句中都增加判断if(IsEditing),也就是说只有处于可编辑状态下才能设置为不可编辑,也是为了防止同一操作多次调用。
然后定义我们的委托public delegate void _EditMessageChanged()和事件publicevent _editMessageChanged EditMessageChanged;
最后我们在IsEditing的set中增加
if (value)
_useEditMessageChanged = true;
else if(_useEditMessageChanged && EditMessageChanged != null)
{
_useEditMessageChanged = false;
EditMessageChanged();
}
如果我们要使用委托就自定义函数进行绑定。测试案例中编辑完成后按下回车会弹出“修改成功”消息框,以下提供测试案例源码。