在Expression Blend中,d:IsControlPart属性是用来做什么的?

3
在Expression Blend 4中,简单样式使用以下XML命名空间:
http://schemas.microsoft.com/expression/interactivedesigner/2006

这种技术经常使用来自该命名空间的一个称为IsControlPart的属性,它是一个布尔值。我进行了广泛的谷歌搜索,但无法找到有关此属性的实际文档。


那属于哪个程序集? - H.B.
1
我认为它不是任何程序集的一部分。它在运行时不存在,仅用于 Blend IDE 中的设计时目的。它使用标记兼容性“可忽略”属性来告诉 XAML 编译器忽略它。 - Trevor Elliott
似乎是关于正在进行样式化的对象的逻辑注释。 - H.B.
1个回答

2
我想我弄明白了。
当WPF为其控件创建默认模板时,它使用前缀“PART”来命名某些元素。例如,在Slider控件中,它有两个部分,PART_Track和PART_SelectionRange。这本身与Expression Blend无关。
这些部分对于控件的基本功能是必要的。大多数简单的控件(如按钮)没有任何部分,因此可以完全自定义而没有任何限制。
更复杂的控件依赖于存在部分以使代码后台正常工作。它不关心控件的外观或它们在视觉树中的位置,只要它们存在且类型正确即可。
在Expression Blend中,有一个“Parts”窗口,默认情况下是“Project”和“Assets”选项卡旁边的选项卡。当您编辑控件的模板时,如果该控件定义了任何部分,则在此“Parts”窗口中列出它们。如果该部分不存在于当前模板中,则它会显示一个勾号,否则您可以双击它,Blend将为您创建该元素。
我仍然不确定d:IsControlPart属性的确切工作方式。我尝试创建自己的自定义控件并创建带有IsControlPart标记的元素,然后为该控件创建模板以查看是否会列出该部分。但它没有。所以这仍然没有100%的答案。

我也考虑过这个连接,但我非常确定它与IsControlPart没有任何关系。这些部分是通过TemplatePartAttribute来工作的,该属性设置在控件类上,例如ProgressBar的语法部分。 - H.B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接