您的位置:首页 > 移动开发

WPF Hello World 之 WPF窗口创建的三种方法

2017-05-19 00:11 671 查看
写在前面:

以前一直是写Win form 程序做东西的,不过渐渐发现Win form做的界面效果不是很好。决定学习WPF,拓宽一下技术路线。视频原址:猎豹网校

第一章:WPF窗口创建

首先了解一下WPC程序的基本框架:

每个WPF程序都包括一个Application

类代表着一个WPF应用程序,其次包含多个Window类,作为这个程序拥有的多个窗口,其中有一个是主窗口

每一窗口都拥有若干个Control对象,声明过程为:1,声明一个私有Control对象(如Button)。2,在窗口的类的构造函数中调用的InitializeComponent函数里面初始化Control的属性。

在程序的Main函数里面声明一个Application类的,指定Application的主窗口,再调用Application.Run函数即可运行起一个WPF程序

是WPF窗口创建的三种方法

一、使用纯C#语言创建WPF窗口窗口

1. Application类声明、指定主窗口及运行

class Program : Application
{
[STAThread()]

static void Main()
{
Program app = new Program();
app.MainWindow = new Window1();
app.MainWindow.ShowDialog();
}
}


手动声明窗口类及控件初始化

class Window1 : Window
{
private Button button1; //声明私有控件
public Window1()        //构造函数
{
InitializeComponent();
}
private void InitializeComponent()  //控件属性初始化
{
//设置窗体参数
this.Width = 600;
this.Height = 400;
this.Left = this.Top = 100;
this.Title = "Code-only Window";

//创建面板对象
DockPanel panel = new DockPanel();

//创建面板对象
button1 = new Button();
button1.Content = "Please click me";
button1.Margin = new Thickness(100,100,100,100);
button1.Click +=button1_Click;          //委托,指定点击事件发生的回调函数

IAddChild container = panel;
container.AddChild(button1);
container = this;
container.AddChild(panel);
}

private void button1_Click(object sender, RoutedEventArgs e) //控件的响应函数
{
button1.Content = "Thank you~";
}
}


最终效果



二、使用XAM L创建WPF窗口

第二种方法与第一种方法类似,只是从InitializeComponent函数利用C#代码初始化控件属性改为从.xmal文件中加载控件信息,并初始化控件。

1. 首先创建Window1.xmal文件内容如下:



2 窗口的构造函数

public partial class MainWindow : Window

{

private Button mybutton; //私有控件

public MainWindow()
{
InitializeComponent();
}
public MainWindow(string xmalFile)
{
//设置窗体参数
this.Width = 600;
this.Height = 400;
this.Left = this.Top = 100;
this.Title = "Dynamically Loaded XMAL Window";

//从一个XMAL文件类获取XMAL内容
DependencyObject root = new DependencyObject();
using (FileStream fs = new FileStream(xmalFile, FileMode.Open))
{
root = (DependencyObject)XamlReader.Load(fs);
}
this.Content = root;

//从XMAL内容里面搜索button1 属性信息并赋值给mybutton
mybutton =(Button)LogicalTreeHelper.FindLogicalNode(root,"button1");
mybutton.Click += mybutton_Click;
}

private void mybutton_Click(object sender, RoutedEventArgs  e))
{
mybutton.Content = "Thank you.";
}
}


最终效果



三、是有可视化界面进行窗口创建

可视化界面即是我们正常新建窗口,通过工具箱拖拽控件配合Xmal文件共同设计布局。可视化界面在正常开发中是最常见的一种方式,可以屏蔽掉底层机制,直接进行快速开发。

最后:

通过对WPF的三种创建窗口的方式的学习,是我初步的了解了WPF运行运行机制,以及它和Winform的一些区别与共同之处。接下来就是熟悉WPF控件的使用,熟悉Xmal文档的使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息