我想创建自定义控件,它看起来像标准的WPF ComboBox
,但不是弹出窗口中会有ItemsPresenter
,而会有另一个自定义控件。所以,我创建了从0派生新类,增加了一个IsDropDownOpen
财产,创造一种风格,其实是默认ComboBox
风格复印件(主要思想是,Popup.IsOpen
和ToggleButton.IsPressed
属性绑定到该控件的IsDropDownOpen
属性)。WPF类似combobox的自定义控件
问题是,当我单击控件外部时,Popup
未关闭。
我看了看Reflector中的ComboBox
类,发现ComboBox
在丢失鼠标捕获时使用了一些逻辑来更新IsDropDownOpen
属性。但是该代码使用了一些内部类。有没有其他方法可以确定用户是否在控制之外单击并关闭了Popup
?
UPD:我没有找到附加文件发布的方式,所以我上传示例项目here
有看起来像组合框自定义控制,但它有一个弹出一个TreeView。当您打开弹出窗口并在控件外部单击时,它会自动关闭,但如果您打开弹出窗口,请展开'Item2',然后在弹出窗口外部单击关闭。问题是如何解决这个问题?
你可以张贴一些代码? – RQDQ 2011-02-16 15:02:39
@RQDQ:你到底需要什么?控制模板?正如我所说,它与默认的组合框模板相同,但不是ItemsPresenter还有另一个控件。 – adogg 2011-02-17 07:21:13
这个想法是我们想看看你已经有了什么,所以我们不必重新发明轮子来帮助你。 – RQDQ 2011-02-17 14:09:54