如何在 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 中提取默认控件模板?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2005中win form 中控件背景颜色透明问题

如何将用户控件放入 Visual Studio 工具箱

如何停止 Visual Studio 为设计器中的控件生成属性设置?

如何在 Visual Studio 2017 中设置表单控件的工具提示属性

如何在Visual Studio工具栏中添加WebView2控件?

visual studio里插flash要放啥控件