- xaml元素进阶
1.在.cs后端代码中写xaml对象
一个标签的声明就是一个类对象,按照道理可以通过代码来创建类实现元素的创建,也就是通过后台CS代码创建界面元素。
下面创建一个空的项目,然后添加两个类,分别命名为MyWindow.cs和Program.cs,前者用来创建一个包含按钮的窗体,后者用来启动这个窗体
MyWindow.cs
public class MyWindow:Window
{
private Button btn;
public MyWindow()
{
InitializeComponent();
}
private void InitializeComponent()
{
//设置窗体大小
this.Width = 800;
this.Height = 450;
this.Left = this.Top = 100;
this.Title = "MyWindow";
//创建一个容器,用来接收button
DockPanel dock_panel1 = new DockPanel();
//创建一个容器,用来接收Button
btn = new Button();
btn.Content = "click me.";
btn.Margin = new Thickness(30);
//为按钮绑定事件
btn.Click += Btn_Click;
//
IAddChild container = dock_panel1;
container.AddChild(btn);
container = this;
container.AddChild(dock_panel1);
}
private void Btn_Click(object sender, RoutedEventArgs e)
{
this.btn.Content = "Thanks!";
}
}
Program.cs
public class Program:Application
{
[STAThread()]//单线程单元不可少
static void Main() //整个程序的入口
{
Program app = new Program();
app.MainWindow = new MyWindow();
app.MainWindow.ShowDialog();
}
}
F5运行如下:
2.还可以动态的将XAML信息交给程序处理,动态生成相应的控件,将后端代码修改为
public class MyWindow:Window
{
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);
}
}
F5运行: