在WPF中通过编程方式创建控件模板

7
我该如何通过编程设置按钮的模板?
Polygon buttonPolygon = new Polygon();
buttonPolygon.Points = buttonPointCollection;
buttonPolygon.Stroke = Brushes.Yellow;
buttonPolygon.StrokeThickness = 2;

// create ControlTemplate based on polygon
ControlTemplate template = new ControlTemplate();
template.Childeren.Add(buttonPolygon); // This does not work! What's the right way?

//create button based on controltemplate
Button button = new Button();
button.Template = template;

我需要一种方法将我的多边形设置为按钮的模板。有什么建议吗?
谢谢。
1个回答

6

官方建议您将新的ControlTemplate的XAML创建为字符串,然后使用XamlReader.Parse将其实例化为ControlTemplate对象。

更结构化的方法是使用FrameworkElementFactory类--创建FrameworkElementFactory并将ControlTemplate.VisualTree设置为该FEF。这样可以提高类型安全性,并避免编写对象树以再次读取时的笨拙。但是,它已被正式弃用,如果模板复杂,则可能变得相当复杂。

请参见如何在代码中设置WPF datatemplate以供树形视图使用?,其中包含两种方法的示例--它们是在DataTemplate的上下文中编写的,但也适用于ControlTemplate。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接