创建或修改模板

控件的外观由美工板上应用于控件的模板定义。模板包括控件内所包含的对象。例如, TextBox 的控件模板包含一个名为“Bd”的 Border 对象,而后者又包含一个名为“PART_ContentHost”的 ScrollViewer 对象。在对美工板上的 TextBox 应用该控件模板时, ScrollViewer 对象将显示 TextBox 的内容。

系统控件的默认模板使用动态主题,可根据应用程序运行在哪个 Windows 版本上来改变控件的外观。但是,如果修改系统控件的模板,则您的控件在所有版本上的外观都将一样。

有关详细信息,请参阅设置支持模板的控件的样式中的“主题”一节。

控件模板以资源的形式保存,可应用于同一类型的其他控件。

创建控件模板

  1. 在“对象和时间线”面板中或在美工板上,选择要从中创建控件模板的对象,然后执行下列操作之一:

    • 在“对象”菜单中,指向“编辑模板”。

    • 右键单击对象,然后指向“编辑模板”。

    • 在美工板顶部的痕迹导航栏中,单击对象的名称。

  2. 在出现的下拉菜单中,执行下列操作之一:

    • 若要创建一个新的空模板,请单击“创建空模板”。

    • 若要基于当前正由选定对象使用的模板(无论该模板是对象的默认模板,还是先前创建的自定义模板)创建新模板,请单击“编辑副本”。

      Note注意:

      如果启用了“编辑当前模板”选项,则此对象已应用了模板。或者,您也可以选择编辑此模板。

    此时,将显示“创建样式”对话框。这是因为控件模板存储在样式资源中。

  3. 在“名称(关键字)”下,执行下列操作之一:

    • 若要为该对象创建新的命名样式,请键入关键字名称。其他对象可通过此名称引用该样式,从而应用该模板。

    • 若要创建将由此类型的所有对象使用的样式,请选择“全部应用”。

      tip note提示:

      在要创建的样式对象的 XAML 中,会将一个名为 TargetType 的属性设置为要为其创建样式的对象的类型。

      只有键入了关键字名称(此步骤的第一个选项),才会设置 x:Key 属性。如果存在 x:Key 属性,则样式只能应用到通过关键字名称指定该样式的对象;如果没有 x:Key 属性,则能够将样式应用到此类型的所有对象。例如,以下代码示例中的样式对象将不会应用于美工板上的所有按钮。

      <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"...

  4. 在“定义位置”下,选择选项以确定要定义样式的位置:

    • 若要使应用程序中的任何文档都能使用该样式,请选择“应用程序”。

    • 若要使样式只能由当前文档使用,请选择“此文档”,并从下拉菜单中选择一个选项。

    • 若要在资源字典文件中定义可以在其他项目中重用的样式,请选择“资源字典”。接下来,可以在下拉菜单中选择现有的资源字典文件,或者通过单击“新建”以创建新的资源字典文件。

  5. 单击“确定”,以退出对话框并打开该样式以供编辑。

    tip note提示:

    您可以在样式内高效地创建新的模板资源。该资源将成为本地资源,并且可以使用“资源”面板中的“编辑资源”按钮轻松进行查看和修改。

  6. 注意美工板顶部的 Microsoft Expression Blend 痕迹导航栏。

    选定了模板编辑模式的痕迹导航栏

    Cc294908.eb50efd9-44c6-41f9-8f50-7d40f6c42e61(zh-cn,Expression.40).png

    通过单击痕迹导航栏上的按钮,可以在选定对象的模板编辑模式、样式编辑模式和对象编辑范围之间快速切换。对于应用了自定义样式或模板的任何选定对象,都会显示痕迹导航栏。

  7. 通过添加或重新排列子对象对模板进行修改。

  8. 您可以执行下列操作之一,从而基于用户交互的结果来更改对象的外观或行为:

    • 如果在 Windows Presentation Foundation (WPF) 项目中工作,请在“触发器”面板中选择触发器以启用触发器记录操作,然后对模板中的对象进行更改。如果所需的触发器不存在,您可以创建一个。例如,若要创建触发器来处理 Button 对象的单击,请单击“添加属性触发器”,将触发器设置为 IsPressed=True ,选择新的触发器,然后进行更改。

      有关触发器的详细信息,请参阅使用触发器定义 WPF 控件的行为

      有关详细信息,请参阅 WPF 简单样式的样式提示

      Caution note 小心:

      更改控件模板的某些部分可能会破坏控件的功能。

      有关准则,请参阅设置支持模板的控件的样式 中的“最佳实践”。

    • 如果在 Microsoft Silverlight 项目中工作,请在“状态”面板中选择状态以启用状态记录操作,然后对模板中的对象进行更改。如果对象的类型支持部件,您可以将模板的部件分配给不同的对象。例如,您可以导入作品作为 Image 对象,然后将新对象转换为模板的部件。状态使用模板部件来更改对象的外观以响应用户交互操作。

      有关详细信息,请参阅设置 Silverlight 控件模板部件的样式常用 Silverlight 控件的样式提示

    • 若要进一步为对象添加交互性,您可以在“状态”面板中创建新状态,然后使用 GoToStateAction 行为,以便基于事件在状态之间切换。

      有关详细信息,请参阅定义控件的不同视觉状态

    • 您可以编写将运行以响应事件的代码。在“属性”面板的“事件”视图中,双击事件名称旁边的输入字段,以便将事件处理程序方法添加到文档的代码隐藏文件。

      有关详细信息,请参阅编写将对事件做出响应的代码

  9. 若要退出样式的编辑范围,请在“对象和时间线”面板中单击“返回到范围”Cc294908.55844eb3-ed98-4f20-aa66-a6f5b23eeb2b(zh-cn,Expression.40).png。此操作会返回到文档的编辑范围。

    tip note提示:

    请注意,为对象创建或应用样式资源后,将在“属性”面板中为 Style 属性显示绿色突出显示框,以指明该对象现已绑定或链接到此样式资源。

编辑现有的自定义模板

在美工板上或在“对象和时间线”面板中,单击某个对象以将其选中,然后执行下列操作之一:

  • 在美工板顶部的痕迹导航栏中,单击第三个按钮。

    Cc294908.5bb586ea-6adc-4672-b316-0fab8215ff8c(zh-cn,Expression.40).png

  • 在“对象”菜单上,指向“编辑模板”,然后单击“编辑当前模板”。

  • 右键单击对象,指向“编辑模板”,然后单击“编辑当前模板”。

  • 在“属性”面板中,单击 Style 属性(由于以前对此对象应用了样式,此属性应以绿色突出显示)旁边的“高级选项”Cc294908.ac1bd7f6-f5e6-494c-bca7-7a57ab314eab(zh-cn,Expression.40).png,然后在快捷菜单上单击“编辑资源”。处于样式的编辑范围中时,右键单击“对象和时间线”面板中的“Style”对象,指向“编辑模板”,然后单击“编辑当前模板”。

    Note注意:

    如果“编辑当前模板”选项处于禁用状态,则尚未对该对象应用任何模板。

    tip note提示:

    您可以通过以下方式从模板编辑模式内快速绑定模板:在“属性”面板中要绑定到的属性旁边单击“高级选项”,然后单击“模板绑定”。

    Expression Blend 将进入模板的编辑范围。

从“资源”面板中打开模板

  1. 在“资源”面板中,找到资源名,然后单击该名称旁边的“编辑资源”按钮。

    Expression Blend 将进入样式的编辑范围。

  2. 处于样式的编辑范围中时,右键单击“对象和时间线”面板中的 Style 对象,指向“编辑模板”,然后单击“编辑当前模板”。

    Expression Blend 将进入模板的编辑范围。

另请参阅

任务

从现有对象创建用户控件

概念

常用 Silverlight 控件的样式提示
WPF 简单样式的样式提示

Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。