如何在Visual Studio中提取默认控件模板?

for*_*yez 52 wpf xaml visual-studio

我想知道如何使用Visual Studio提取(获取副本)给定控件的默认模板.我知道这可以通过Expression Blend(右键单击控件,"编辑模板" - >"编辑副本...")来完成,然后在我的Xaml中复制默认控件模板.但这可以用Visual Studio完成吗?

She*_*dan 81

2015 update with clear instructions

在Visual Studio 2013中,ControlTemplate只需几个简单步骤即可获得控件的默认值.

  1. 在WPF设计器中,选择相关控件,或将鼠标光标放在XAML中的相关控件上.

  2. F4以打开"属性"窗口.

  3. 打开" 杂项"类别以查找" 模板"属性,或在"窗口"顶部的搜索字段中键入" 模板 ".

  4. 单击Template字段右侧的小方块,然后选择Convert to New Resource ...选项:

在此输入图像描述

  1. 在弹出对话框中,ControlTemplate为要添加的新名称命名并确定要在其中定义的位置:

在此输入图像描述

  1. 单击" 确定"按钮.


Roy*_*del 33

从Visual studio - 右键单击​​控件,选择属性,

在属性窗口中查找模板属性并右键单击它,选择"将值提取到资源"

这将在XAML中创建模板的副本供您使用.

  • @Jeff:右键单击设计器窗口中的元素(不在Xaml-Code中),然后"编辑模板..."和"编辑副本..." (2认同)

ero*_*ald 9

只是为了更新这个问题,在VS 11中,XAML设计器允许您像Expression Blend一样执行此操作.


Joh*_*rum 5

要记住的一件事是:如果您已经在某个位置定义了针对给定控件的样式,则上述所有选项都将被禁用。我的 App.xaml 文件中有以下代码:

<Application.Resources>
    <Style TargetType="Button">
        <Setter Property="IsTabStop" Value="False"/>
    </Style>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

我费尽心思试图弄清楚为什么其他答案中描述的edit a copy...和选项对我的按钮(它是在一个完全不同的文件中定义的)被禁用。convert to new resource...我注释掉了按钮的上述样式代码,突然两个选项都不再被禁用。

这个故事的寓意是:如果代码中任何地方已经存在该元素的样式,VS 不会为您生成包含模板副本的样式。