WPF新建好一个窗口后,会生成如下的XAML语句
<Window x:Class="WPF_Code.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" >
<Grid>
</Grid>
</Window>
同XML类似,XAML中最基本的语法元素就是标签、属性、内容
标签是通常是以<>开始,以
<Window x:Class="WPF_Code.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" >
<Grid>
<Grid.Background>
<LinearGradientBrush>
<GradientStop Color="#FFE27232" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FF6EBF61" Offset="2"/>
</LinearGradientBrush>
</Grid.Background>
</Grid>
</Window>
元素的属性也可以通过标签来表示,如上所示的<Grid.Background>
就是使用了Grid的背景属性,然后通过同样的方式,设置画笔的颜色,偏移量等待,完成渐变色
还可以通过打开属性面板》画笔来设置渐变色
既然说一个标签的声明就是一个类对象,那按照道理可以通过代码来创建类实现元素的创建
下面创建一个空的项目,然后添加两个类,分别命名为MyWindow.cs和Program.cs,前者用来创建一个包含按钮的窗体,后者用来启动这个窗体
MyWindow.cs
//需要引用以下三个命名空间
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
namespace WPF_Code
{
//当前类要继承处Window类
class MyWindow : Window
{
//一个未实例化的按钮对象
private Button btn;
//当前窗体的构造函数
public MyWindow()
{
InitializeComponent();
}
//用于初始化窗体
private void InitializeComponent()
{
//设置窗体大小
this.Width = 280;
this.Height =200;
this.Left = this.Top = 100;
this.Title = "MyWindow";
//创建一个容器,用来接收Button
DockPanel dock_panel = new DockPanel();
//创建按钮对象
btn = new Button();
btn.Content = "Plese click me.";
btn.Margin = new Thickness(30);
//为按钮绑定事件
btn.Click += btn_Click;
//提供分析允许混合子元素或文本的元素所需的方法
IAddChild container = dock_panel;
container.AddChild(btn);
container = this;
container.AddChild(dock_panel);
}
void btn_Click(object sender, RoutedEventArgs e)
{
this.btn.Content = "Thanks!";
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;//引用该命名空间
namespace WPF_Code
{
//继承自Application
class Program:Application
{
[STAThread()]//单线程单元不可少
static void Main()//整个程序的入口
{
Program app_program = new Program();
app_program.MainWindow = new MyWindow();//当前启动的窗体对象
app_program.MainWindow.ShowDialog();//窗体以对话框形式启动
}
}
}
打开项目的属性,设置启动位置从Program启动
按下F5,显示结果
还可以动态的将XAML信息交给程序处理,动态生成相应的控件,将后端代码修改为
//需要引用以下三个命名空间
using System.Windows;
using System.Windows.Controls;
using System.Windows.Markup;
namespace WPF_Code
{
//当前类要继承处Window类
class MyWindow : Window
{
//一个未实例化的按钮对象
private Button btn;
//当前窗体的构造函数
public MyWindow()
{
InitializeComponent();
}
//用于初始化窗体
private void InitializeComponent()
{
//创建XAML
String xaml = " <StackPanel xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Width=\"200\" Height=\"200\" Background=\"Blue\" > <Button Content=\"Dynamic Button One\" Background=\"Yellow\"/> <Button Content=\"Dynamic Button Two\" Background=\"Yellow\"/> <Button Content=\"Dynamic Button Three\" Background=\"Yellow\"/> <TextBox Text=\"Dynamic TextBox\" Background=\"LightGreen\"/> </StackPanel>";
//指定XAML
this.Content = XamlReader.Parse(xaml);
}
}
}
运行结果如下: