现在主流的控件模板和样式是引用XAML资源,不过感觉没有c#代码实现那么灵活,现介绍一下代码实现ControlTemplate的方法:
//控件呈现的显示内容1(这里为Image)
FrameworkElementFactoryfe=newFrameworkElementFactory(typeof(Image),"Image");
BitmapImagebi=newBitmapImage();
bi.BeginInit();
bi.UriSource=newUri(@"E:ChartControlHanYangChartControlImageMainBackground.jpg");
bi.EndInit();
fe.SetValue(Image.SourceProperty,bi);
//控件呈现的显示内容2(这里为TextBox)
FrameworkElementFactoryfe2=newFrameworkElementFactory(typeof(TextBox),"TextBox");
fe2.SetValue(TextBox.WidthProperty,100.0);
fe2.SetValue(TextBox.HeightProperty,100.0);
//把要呈现的显示内容封装起来
FrameworkElementFactoryf=newFrameworkElementFactory(typeof(Grid),"Grid");
f.AppendChild(fe);
f.AppendChild(fe2);
//控件模板
ControlTemplatect=newControlTemplate(typeof(Button));
ct.VisualTree=f;
//修改Button的Template
Buttonbtn=newButton();
btn.Template=ct;
FrameworkElementFactoryfe=newFrameworkElementFactory(typeof(Image),"Image");
BitmapImagebi=newBitmapImage();
bi.BeginInit();
bi.UriSource=newUri(@"E:ChartControlHanYangChartControlImageMainBackground.jpg");
bi.EndInit();
fe.SetValue(Image.SourceProperty,bi);
//控件呈现的显示内容2(这里为TextBox)
FrameworkElementFactoryfe2=newFrameworkElementFactory(typeof(TextBox),"TextBox");
fe2.SetValue(TextBox.WidthProperty,100.0);
fe2.SetValue(TextBox.HeightProperty,100.0);
//把要呈现的显示内容封装起来
FrameworkElementFactoryf=newFrameworkElementFactory(typeof(Grid),"Grid");
f.AppendChild(fe);
f.AppendChild(fe2);
//控件模板
ControlTemplatect=newControlTemplate(typeof(Button));
ct.VisualTree=f;
//修改Button的Template
Buttonbtn=newButton();
btn.Template=ct;
本文介绍使用C#代码方式自定义WPF中ControlTemplate的方法,包括如何通过FrameworkElementFactory创建UI元素,设置属性,并组合成控件模板。
248

被折叠的 条评论
为什么被折叠?



