使用自定义的文档Window1.xaml
编写启动类Program.cs
使用单线程【STAThread】
定义Main函数
加载文档window1.xaml,window1.xaml存放的位置是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Threading.Tasks;
namespace WpfApplication6
{
class Program : Application {
[STAThread]
static void Main()
{
Program app = new Program();
app.MainWindow = new MainWindow("Window1.xaml");
app.MainWindow.ShowDialog();
}
}
}
Window1.xaml内容是
<DockPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Button Name="button1" Margin="60">click me</Button>
</DockPanel>
MainWindow.xaml.cs
using System.Windows.Controls;
using System.Windows;
using System.IO;
using System.Windows.Markup;
namespace WpfApplication6
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public MainWindow(string xamlFile)
{
this.Width = this.Height = 285;
this.Left = this.Top = 100;
this.Title = "Dynamically Loaded XAML";
//从一个XAML文件里获取XAML内容
DependencyObject rootElement;
using (FileStream fs = new FileStream(xamlFile,FileMode.Open))
{
rootElement = (DependencyObject)XamlReader.Load(fs);
}
this.Content = rootElement;
}
}
}
但是这时单击按钮没有反应,所以应当添加事件。
所以主窗口类修改为如下:
using System.Windows.Controls;
using System.Windows;
using System.IO;
using System.Windows.Markup;
namespace WpfApplication6
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private Button myButton;
public MainWindow()
{
InitializeComponent();
}
public MainWindow(string xamlFile)
{
this.Width = this.Height = 285;
this.Left = this.Top = 100;
this.Title = "Dynamically Loaded XAML";
//从一个XAML文件里获取XAML内容
DependencyObject rootElement;
using (FileStream fs = new FileStream(xamlFile,FileMode.Open))
{
rootElement = (DependencyObject)XamlReader.Load(fs);
}
this.Content = rootElement;
myButton = (Button)LogicalTreeHelper.FindLogicalNode(rootElement,"button1");
myButton.Click += clickButton;
}
private void clickButton(object sender,RoutedEventArgs e)
{
myButton.Content = "谢谢你点击了我";
}
}
}