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

Kir*_*rst 2 silverlight expression-blend

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

ComboBox模板包含四个项目:

  • ContentPresenterBorder
  • DisabledVisualElement
  • FocusVisualElement
  • Popup

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

Popup是一个控制部分.

这是什么意思?

Cod*_*ked 5

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

我可以给他们任何旧的名称(如"左"和"右"),然后找到里面的情况下FancyControl.OnApplyTemplate使用GetTemplatedChild.使用任意名称的问题是,如果其他人想要重新控制我们的控制,他们不知道Sliders 需要为我的控件使用"左"和"右"这两个名称.

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

TemplatePartAttribute可以被用来指示有效的部件名称和它们相关联的类型.设计师可以使用它,例如Blend,以正确检测命名部件.

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