对于我自己的控制 我通常会做一些事情 比如:
<Style x:Key="FooStyle>
<Setter Property="Template>
<Setter.Value>
<ControlTemplate TargetType="FooControl">
<Grid d:DataContext="{d:DesignInstance FooDesignTimeData, IsDesignTimeCreatable=True}">
... guts of control template go here ...
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果“FooDefignTimeData”是一个以适当形式提供设计时间数据的类别(执行运行时视图模型中的接口是这里的良好做法)。
我不明白为什么这对第三方控件也没用。你甚至可能不必重新标注控件,你也许只要在风格中指定第三方控件,并给它一个上文具体说明的设计时间数据环境,就可以逃脱,但我还没有尝试过这种情景。我假设你将面临所有这些麻烦,因为你不得不使用一个设计时间经验不甚丰富的控制(例如提供供应商、控制、设计、设计或销售商、控制、分析、设计、设计、设计等文件) 。
要与模板Binding 一起工作, 我没有一个伟大的解决方案。 我通常会创建一个测试页面, 显示我的控件, 并允许我切换模板。 在整合过程中, 您将会有一个额外的视图( 无论是在您的应用程序中还是作为单独的应用程序), 允许您根据需要创建和操控控控实例。 GoToToState Action 目标来自 Bleand SDK 的触发动作通常在这里有用 。 例如, 为每个视觉状态创建一个按钮, 然后使用点击来触发向特定状态的过渡 。 这样您就可以轻松测试您所有的状态加上转换, 并同时强制测试数据 。 Hacky 并不真正设计时间数据, 但是它有效 。