【发布时间】:2012-02-08 03:34:21
【问题描述】:
我想知道如何使用 Visual Studio 提取(获取副本)给定控件的默认模板。我知道这可以通过 Expression Blend(右键单击控件,“编辑模板”->“编辑副本...”)来完成,然后将默认控件模板复制到我的 Xaml 中。但这完全可以用 Visual Studio 完成吗?
【问题讨论】:
标签: wpf visual-studio xaml
我想知道如何使用 Visual Studio 提取(获取副本)给定控件的默认模板。我知道这可以通过 Expression Blend(右键单击控件,“编辑模板”->“编辑副本...”)来完成,然后将默认控件模板复制到我的 Xaml 中。但这完全可以用 Visual Studio 完成吗?
【问题讨论】:
标签: wpf visual-studio xaml
2015 年更新,说明清晰
在 Visual Studio 2013 中,您可以通过几个简单的步骤获取控件的默认 ControlTemplate。
在 WPF 设计器中,选择相关控件,或将鼠标光标放在 XAML 中的相关控件上。
按 F4 打开属性窗口。
打开 Miscellaneous 类别以查找 Template 属性,或在窗口顶部的搜索字段中键入 Template。 p>
单击模板字段右侧的小方块并选择转换为新资源...选项:
ControlTemplate 命名并决定要在哪里定义它:编辑>>>
在 Visual Studio 2019 及更高版本中,此选项似乎由于某种原因被禁用。可以通过右键单击设计视图中的控件并选择“编辑模板”,然后选择“编辑副本...”来找到解决方法。
【讨论】:
从 Visual Studio - 右键单击控件,选择属性,
在属性窗口中查找模板属性并右键单击它, 选择将值提取到资源
这将在 XAML 中创建模板的副本供您使用。
【讨论】:
只是为了更新这个问题,在 VS 11 中,XAML 设计器允许您像 Expression Blend 一样执行此操作。
【讨论】:
要记住一件事:如果您已经在某处定义了针对给定控件的样式,则上述所有选项都将被禁用。我的 App.xaml 文件中有以下代码:
<Application.Resources>
<Style TargetType="Button">
<Setter Property="IsTabStop" Value="False"/>
</Style>
</Application.Resources>
我竭力想弄清楚为什么其他答案中描述的edit a copy... 和convert to new resource... 选项对我的按钮(在完全不同的文件中定义)被禁用。我注释掉了上面的 Button 样式代码,突然这两个选项都不再被禁用了。
故事的寓意:如果您的代码中的任何地方已经存在该元素的样式,VS 不会为您生成包含模板副本的样式。
【讨论】:
在 VS19 中,我无法通过属性来做到这一点。
但是,我能够在设计模式Edit Template 和Edit a Copy 中右键单击控件。
【讨论】:
据我所知,这是不可能的。但是,您可以使用Show Me The Template 查看给定控件的默认模板。
【讨论】: