功能描述

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-

05-07 15:37