我想问一下wpf(或silverlight)中有关combobox的实现细节

时间:2011-01-01 12:57:20

标签: wpf combobox controls

我现在正在研究wpf中的自定义控件。我用Combobox作为父母。 我想知道我的自定义Combobox如何像它的父母那样工作。如何点击屏幕的任何部分,我的组合框的下拉部分可以关闭...我尝试了很多方法,但两种方法都不正常。

有人可以发表一些文章吗?

1 个答案:

答案 0 :(得分:1)

以下是ComboBox的标准控件模板:WPFSilverlight

在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中打开程序集,则会找到相同的序列。