• WPF 纯代码生成界面(不使用XAML)


        对于编写 WPF 应用程序,只是用代码进行开发而不使用任何 XAML 不是常见的方式(但是仍然完全支持)。只使用代码进行开发的明显缺点是,有可能会使用编写 WPF 应用程序成为极端乏味的工作。 WPF 控件没有包含参数化的构造函数,因此即使为窗体添加一个简单的按钮也需要编写几行代码。只使用代码进行开发的一个潜在的优点是可以随意定制应用程序。例如,可以根据数据记录中的信息生成一个充满输入控件的窗体,或者可以根据当前的用户酌情添加或替换控件。需要的所有内容只不过是少量的条件逻辑。相比之下,如果使用XAML文档,它们只能作为固定不变的资源嵌入到程序集中。

        以下代码用于生成一个普通的窗体,该窗体包含一个按钮盒一个事件处理程序(如下图)。当创建窗口时,构造函数调用一个 InitializeComponent() 方法,该方法实例化并配置这个按钮和窗体,并连接事件处理程序。

    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Markup;
    
    namespace _1003_CodeOnlyWindow
    {
        public class Window1:Window
        {
            private Button button1;
    
            public Window1()
            {
                InitializeComponent();
            }
    
            void InitializeComponent()
            {
                //配置当前窗体
                this.Width = this.Height = 285;
                this.Left = this.Top = 100;
                this.Title = "Code-Only Window";
    
                //创建一个面板放置按钮
                DockPanel panel = new DockPanel();
    
                //创建按钮
                button1 = new Button();
                button1.Content = "请点我";
                button1.Margin = new Thickness(30);
    
                //注册按钮点击事件
                button1.Click += button1_Click;
    
                //将按钮放置到面板中
                IAddChild container = panel;
                container.AddChild(button1);
    
                //将面板放置到窗体中
                container = this;
                container.AddChild(panel);
            }
    
            void button1_Click(object sender, RoutedEventArgs e)
            {
                button1.Content = "Thank you!";
            }
        }
    }

        从概念上讲,在本示例中的程序更像传统的 Winform 程序的一个窗体,它继承自Window基类,并未每个控件添加一个私有成员变量。为清晰起见,这个类在一个专门的 InitializeComponent() 方法中执行初始化操作。

        为启动这个应用程序,可在 Main() 方法中添加如下代码:

        public class Program:Application
        {
            [STAThread()]
            static void Main()
            {
                Program app = new Program();
                app.MainWindow = new Window1();
                app.MainWindow.ShowDialog();
            }
        }

    源码下载:http://files.cnblogs.com/andrew-blog/1003_CodeOnlyWindow.rar

    使用工具:VS2012 

    参考:http://www.wxzzz.com/?id=127

  • 相关阅读:
    git
    zabbix监控的硬件及网站分析
    zabbix监控web网站
    linux iptables小记
    python画折线图
    开发总结
    JWT的一个demo
    在ASP.NET Core的过滤器中使用依赖注入
    消息队列的一些概念
    删除旧文件的批处理程序
  • 原文地址:https://www.cnblogs.com/andrew-blog/p/WPF_CodeOnly_XAML.html
Copyright © 2020-2023  润新知