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

Posted

技术标签:

【中文标题】如何在 Visual Studio 中提取默认控件模板?【英文标题】:How to Extract Default Control Template In Visual Studio? 【发布时间】:2012-02-08 03:34:21 【问题描述】:

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

【问题讨论】:

【参考方案1】:

2015 年更新,说明清晰

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

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

    F4 打开属性窗口。

    打开 Miscellaneous 类别以查找 Template 属性,或在窗口顶部的搜索字段中键入 Template。 p>

    单击模板字段右侧的小方块并选择转换为新资源...选项:

    在弹出对话框中,将要添加的新 ControlTemplate 命名并决定要在哪里定义它:

    点击确定按钮。

编辑>>>

在 Visual Studio 2019 及更高版本中,此选项似乎由于某种原因被禁用。可以通过右键单击设计视图中的控件并选择“编辑模板”,然后选择“编辑副本...”来找到解决方法。

【讨论】:

谢谢!当我需要获取 DatePickerTextBox 的控件模板时,这确实帮助了我,这样我就可以删除烦人的内边框。 这真的很棒 - 谢谢!你知道是否有一种方法可以类似地提取完整的样式?在 Style 属性上禁用了“转换为新资源”命令。 @AndrewHanlon,您当时是否正在运行解决方案?这是我能想到会导致“转换为新资源”按钮被禁用的唯一原因。 控件消失,因为VS插入了一个空模板: 这些说明也适用于 VS2017。【参考方案2】:

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

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

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

【讨论】:

当我在文本框上执行此操作时,模板属性被禁用,因此我无法右键单击它。 @Jeff:在设计器窗口(不在 Xaml 代码中)右键单击您的元素,然后“编辑模板...”和“编辑副本...”【参考方案3】:

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

【讨论】:

在 VS 2012 发布时仍然如此。【参考方案4】:

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

<Application.Resources>
    <Style TargetType="Button">
        <Setter Property="IsTabStop" Value="False"/>
    </Style>
</Application.Resources>

我竭力想弄清楚为什么其他答案中描述的edit a copy...convert to new resource... 选项对我的按钮(在完全不同的文件中定义)被禁用。我注释掉了上面的 Button 样式代码,突然这两个选项都不再被禁用了。

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

【讨论】:

【参考方案5】:

在 VS19 中,我无法通过属性来做到这一点。

但是,我能够在设计模式Edit TemplateEdit a Copy 中右键单击控件。

【讨论】:

【参考方案6】:

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

【讨论】:

我曾经使用 Show Me The Template 但发现模板偶尔会缺少某些功能,因此已切换到使用在MSDN找到的模板 链接已损坏

以上是关于如何在 Visual Studio 中提取默认控件模板?的主要内容,如果未能解决你的问题,请参考以下文章