功能描述
PopupContainerEdit的PopupControl设置为PopupContainerControl, PopupContainerControl的里面放一个TreeList, TreeList绑定数据。点击TreeList的节点,更改PopupContainerEdit的值。
要实现的效果 | 出现的问题 | 解决方法 |
选择树节点后,更改PopupContainerEdit的值,并自动关闭弹出框。 | 如果TreeList的_FocusedNodeChanged事件中, 调用PopupContainerEdit.ClosePopup()会无效, 而且会导致弹出的框不能关闭(点X按钮,或者点框外区域都不会关闭)。 | 如果将TreeList绑定数据后,调用一下TreeList.ExpandAll()就不会出现上述问题。原因在于,对于树节点的展开操作,造成了PopupContainerEdit的.IsPopupOpen这个bool属性值改变为False (实际界面上表现为True,所以认为这是此控件的一个BUG)。 而在ClosePopup方法内部,肯定先判断了这个bool属性值,当认为此值为False时不会起作用。 最终导致ClosePopup()无效。 第二个解决办法就是调用PopupContainerEdit.ClosePopup()之前, 先调用一下.ShowPopup(),使PopupContainerEdit的.IsPopupOpen改变为True。 这样就可以使ClosePopup()生效。 |
点击X按钮,关闭弹出框 | 点X按钮,关闭弹出框时,控件会自动改变PopupContainerEdit的值为弹出时的初值,而不再是选择树节点后赋予的值。 | 声明一个全局变量,在TreeList的_FocusedNodeChanged事件中,同时将节点值赋值给PopupContainerEdit和全局变量。然后,处理PopupContainerEdit的_Closed事件,将全局变量的值赋值给PopupContainerEdit即可。当然,需要注意全局变量与PopupContainerEdit的状态一致。 |
-20150826-