我现在正在研究wpf中的自定义控件。我用Combobox作为父母。 我想知道我的自定义Combobox如何像它的父母那样工作。如何点击屏幕的任何部分,我的组合框的下拉部分可以关闭...我尝试了很多方法,但两种方法都不正常。
有人可以发表一些文章吗?
答案 0 :(得分:1)
以下是ComboBox的标准控件模板:WPF和Silverlight。
在WPF示例中,Popup和ToggleButton(右侧的箭头)与属性IsDropDownOpen绑定:
<Popup IsOpen="{TemplateBinding IsDropDownOpen}" ...
<ToggleButton IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" ...
类Popup
的属性StaysOpen
未在ComboBox的标准模板中指定,并且具有默认值true
。因此,在ComboBox的内部实现中订阅了LostFocus
事件,每次控件失去焦点时都会设置IsDropDownOpen=false
。
Silverlight在xaml中没有绑定,但如果在.Net Reflector中打开程序集,则会找到相同的序列。