在Blend 2013中,我能够右键单击MenuItem,选择编辑副本,然后为MenuItem生成适当的(大!)模板。它始于:
<ControlTemplate x:Key="{ComponentResourceKey ResourceId=TopLevelHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">
看起来像
此外,我还可以选择&#34;适用于所有&#34;。
在Blend 2015中,当我尝试做同样的事情时,我得到一个截断的MenuItem控件模板,它不仅不能正常工作,而且还需要一个x:Key
并且无法选择适用于所有人。
更新。可悲的是,这并不奇怪,这也出现在VS2015的XAML编辑器中。 Update2。想知道这是否与2015年创建ControlTemplate而不是MenuItem的样式有关。
Update3。如果您从Blend 2013生成模板并将其放入Blend 2014,则无法再在编辑器中显示XAML
Unable to cast object of type 'System.Object' to type 'System.Windows.FrameworkTemplate'.
是你得到的错误。我怀疑当测试人员看到这个而不是修复它时,他们放弃了访问整个MenuItem模板并将其替换为当前(完全无法处理子菜单等)。
如果其他人遇到此问题,则问题来自ComponentResourceKey。设置TypeInTargetAssembly时,会发生错误...该行看起来像
x:Key="{ComponentResourceKey ResourceId=SubmenuHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}"
如果取出TypeInTargetAssembly,则XAML预览将起作用。但是,不会应用模板。