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

摘要:
使用System.Windows.Controls;窗口{privateButtonbutton1;}voidInitializeComponent(){//配置当前表单this.Width=this.Height=285;//单击注册按钮以单击事件按钮1。单击+=button1_Click//将按钮放置在面板IAddChildcontainer=面板中;

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

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

WPF 纯代码生成界面(不使用XAML)第1张

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

免责声明:文章转载自《WPF 纯代码生成界面(不使用XAML)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS背景图怎么自适应全屏(手机或者电脑)xray与burp联动被动扫描下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓界面组件单选复选按框

    安卓界面UI为开发者提供了单选复选框,单选框和复选框继承了安卓的普通按钮,所以他们可以直接使用普通按钮的xml基本属性。他们与普通按钮区别在于提供了可以选中的功能,同时二者之间的区别是:单选按钮在按钮组中,当用户点击选择以后,这个按钮组就必须有一个被选中,只能改选,无法撤销(所以单独的一个单选框功能上很尴尬,点击以后状态不能再更改,很僵硬);复选框...

Windows网络编程

第一章序言                 我写这个专题的目的,一方面是为了通过对网络编程再一次系统的总结,提高自己的网络编程水平,特别是Windows下的网络编程水平。同一时候,我也希望,能为众多初学网络编程的人提供一点帮助,由于我開始学习网络编程的时候,能找到的资料就非常少。当然,花钱能够买到翻译版本号的书:)               首先向大家...

Android中实现按钮自动隐藏

//触摸显示悬浮的按钮@Overridepublic boolean onTouch(View v, MotionEvent event) {    if(!zoomControls.isShown()) {        //用一个定时器定时        final Timer timer = new Timer();        TimerTask...

设置el-tooltip的宽度

<div > <el-tooltip v-bind:content="item.content" popper- placement="bottom" effect="light"> <a href="https://tool.4xseo.com/arti...

黑鹰破解笔记(2)

一、概论 壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种UPX ASPCAK TELOCK PELITE NSPACK ...ARMADILLO ASPROTECT ACPROTECT EPE SVKP ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多!...

Windows8 游戏开发教程一、Metro UI 和绘图

仔细想了想,叫做教程似乎不太合适,应该算作一种讨论。 windows 8 已经玩了一段日子,相信大家对Metro UI已经不陌生了。 Metro UI的介绍 我想很简单就可以带过了。 首先是布局方式,采用XAML布局,虽然外观看起来简单过了头,这是从zune 和wp7 那里继承来的风格。 没有窗口概念,取而代之的是Page。下一层次是控件,容器控件可以放子...