2010-03-28 33 views
4

如何以編程方式設置按鈕的模板?以編程方式在WPF中創建ControlTemplate

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; 

所以我需要一種方法來設置我的多邊形作爲按鈕的模板。建議?

謝謝。

回答

4

正式的,你應該爲新的ControlTemplate創建XAML作爲字符串,然後使用XamlReader.Parse實現它作爲ControlTemplate對象。

更具結構化的方法是使用FrameworkElementFactory類 - 創建FrameworkElementFactory並將ControlTemplate.VisualTree設置爲該FEF。這爲您提供了改進的類型安全性,避免了爲了再次讀取對象樹而寫出對象樹的麻煩。然而,如果你有一個複雜的模板,它已被正式棄用,並且會變得相當複雜。

查看How to setup a WPF datatemplate in code for a treeview?這兩種方法的示例 - 它們都是在DataTemplate的上下文中編寫的,但也可用於ControlTemplate。

+2

Yuck。不管怎麼說,還是要謝謝你。 :-) – 2010-03-29 13:37:34

相關問題