Wpf 如何在VisualStudio中提取默认控件模板?

Wpf 如何在VisualStudio中提取默认控件模板?,wpf,visual-studio,xaml,Wpf,Visual Studio,Xaml,我想知道如何使用VisualStudio提取(获取)给定控件的默认模板。我知道这可以通过Expression Blend(右键单击控件,“编辑模板”->“编辑副本…”)来完成,然后在我的Xaml中复制默认控件模板。但这能用Visual Studio完成吗?据我所知,这是不可能的。但是,您可以使用查看给定控件的默认模板。要更新此问题,在VS 11中,XAML设计器允许您像Expression Blend一样执行此操作。从Visual studio-右键单击该控件,选择属性 在“属性”窗口中,查找模

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

据我所知,这是不可能的。但是,您可以使用查看给定控件的默认模板。

要更新此问题,在VS 11中,XAML设计器允许您像Expression Blend一样执行此操作。

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

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

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

2015年更新,说明清晰

在Visual Studio 2013中,您可以通过几个简单的步骤获得控件的默认
ControlTemplate

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

  • 按F4键打开“属性”窗口

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

  • 单击Template字段右侧的小正方形,然后选择Convert to New Resource。。。选项:

  • 在弹出对话框中,命名要添加的新
    ControlTemplate
    ,并确定要在何处定义它:
  • 点击OK按钮

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

    <Application.Resources>
        <Style TargetType="Button">
            <Setter Property="IsTabStop" Value="False"/>
        </Style>
    </Application.Resources>
    
    
    
    我正在绞尽脑汁试图弄清楚为什么其他答案中描述的
    编辑副本…
    转换为新资源…
    选项对我的按钮(在完全不同的文件中定义)被禁用。我注释掉了上面按钮的样式代码,突然两个选项都不再被禁用了


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

    在VS19中,我无法通过属性来实现这一点


    但是,我能够在设计模式下右键单击控件
    编辑模板
    编辑副本

    我曾经使用Show Me the Template,但发现模板偶尔会缺少一些功能,因此,我们已切换到使用链接上找到的模板,现在已断开。VS 2012发布后仍然如此。当我在文本框上执行此操作时,模板属性被禁用,因此我无法右键单击它。@杰夫:右键单击设计器窗口中的元素(不在Xaml代码中),然后单击“编辑模板…”和“编辑副本…”谢谢!当我需要获取DatePickerTextBox的控件模板以便删除恼人的内边框时,这确实帮助了我。这真是太棒了-谢谢!你知道有没有类似的方法来提取完整的样式?Style属性上的“转换为新资源”命令被禁用。@AndrewHanlon,您当时正在运行解决方案吗?这是我能想到的唯一导致Convert to New Resource(转换为新资源)按钮被禁用的原因。该控件消失,因为VS插入了一个空模板:这些指令对于VS2017也是正确的。