“Popup是一个控制部分” - Silverlight中的“控制部分”是什么?

时间:2011-10-23 22:54:04

标签: silverlight expression-blend

我正在尝试使用Expression Blend在Silverlight中设置ComboBox的样式。

ComboBox模板包含四个项目:

  • ContentPresenterBorder
  • DisabledVisualElement
  • FocusVisualElement
  • Popup

ContentPresenterBorderPopup都包含子元素,并且还有一个小图标,看起来像带有绿色勾号的拼图块。鼠标悬停在此图标上,我收到工具提示:

  

Popup是一个控制部分。

这是什么意思?

1 个答案:

答案 0 :(得分:5)

这个blog post解释了部分,但实际上它是一个具有预定义类型和名称的元素。假设我想创建一个名为FancyControl的新控件。在我的控制范围内,我想要两个滑块,无论出于何种原因,我控制的最佳方式是直接访问在我的代码隐藏中为我的控件创建的Slider对象。

我可以给他们任何旧名称(即“左”和“右”),然后使用FancyControl.OnApplyTemplateGetTemplatedChild内查找实例。使用任意名称的问题是,如果其他人想要重新控制我的控制权,他们不知道Sliders 需要将名称“左”和“右”用于我的控制权工作

Microsoft使用了以PART_为前缀的这些元素名称的约定。因此,当有人重新控制我的控制权时,他们会立即知道Slider必须具有相同的名称(即“PART_Left”和“PART_Right”),否则他们可能会失去功能。

TemplatePartAttribute可用于指示有效的部件名称及其关联类型。设计师可以使用它,例如Blend,以正确检测命名部件。

还值得一提的是,控件的设计应该如果缺少一个命名部分,那么它应该继续使用较少的功能(即它不应该抛出异常)。