Artlife

专注于.NET 3.0技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WPF 关于C#代码实现ControlTemplate

Posted on 2007-01-16 11:47  artlife  阅读(3071)  评论(3)    收藏  举报
现在主流的控件模板和样式是引用XAML资源,不过感觉没有c#代码实现那么灵活,现介绍一下代码实现 ControlTemplate的方法:
          //控件呈现的显示内容1(这里为Image)
           FrameworkElementFactory fe = new FrameworkElementFactory(typeof(Image), "Image");

          BitmapImage bi 
= new BitmapImage();
          bi.BeginInit();
          bi.UriSource 
= new Uri(@"E:ChartControlHanYangChartControlImageMainBackground.jpg");
          bi.EndInit();

          fe.SetValue(Image.SourceProperty, bi);

          
//控件呈现的显示内容2(这里为TextBox)
           FrameworkElementFactory fe2 = new FrameworkElementFactory(typeof(TextBox), "TextBox");
          fe2.SetValue(TextBox.WidthProperty,
100.0);
          fe2.SetValue(TextBox.HeightProperty, 
100.0);

          
//把要呈现的显示内容封装起来
           FrameworkElementFactory f = new FrameworkElementFactory(typeof(Grid), "Grid");
          f.AppendChild(fe);
          f.AppendChild(fe2);

          
//控件模板
           ControlTemplate ct = new ControlTemplate(typeof(Button));
          ct.VisualTree 
= f;

          
//修改Button 的Template 
          Button btn = new Button();
          btn.Template 
= ct;

TJ
2007-1-16