如何在 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插入了一个空模板:从 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 Template
和Edit a Copy
中右键单击控件。
【讨论】:
【参考方案6】:据我所知,这是不可能的。但是,您可以使用Show Me The Template 查看给定控件的默认模板。
【讨论】:
我曾经使用 Show Me The Template 但发现模板偶尔会缺少某些功能,因此已切换到使用在MSDN找到的模板 链接已损坏以上是关于如何在 Visual Studio 中提取默认控件模板?的主要内容,如果未能解决你的问题,请参考以下文章
visual studio 2005中win form 中控件背景颜色透明问题
如何停止 Visual Studio 为设计器中的控件生成属性设置?
如何在 Visual Studio 2017 中设置表单控件的工具提示属性