WPF学习笔记——3)使用代码和未编译的XAML创建WPF程序

1、利用代码创建窗口类

我们首先新建一个窗口类,继承Window类,这个窗口是用来显示组件的,一般我们新建一个WPF程序时这个窗口类已经建好了,这里我们可以直接利用他的代码

using System.Windows;
using System.Windows.Controls;
using System.IO;
using System.Windows.Markup;

namespace _03.create_wpf_by_xaml
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private Button myButton;

        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

 

2、利用未编译的XAML添加组件

下面就是对代码进行修改,让窗口加载我们的XAML文件从而达到添加组件的目的,我们首先对主窗口MainWindow的构造函数进行重载,参数为我们的XAML文件的名称,并且设置一些窗口的基本属性。

//重载构造函数,以xaml文件的名称为参数
public MainWindow(string xamlFile)
{
    //设置窗体的属性
    this.Width = this.Height = 285;
    this.Left = this.Top = 100;
    this.Title = "Danamically Loaded XAML";

}

然后接着在重载的构造函数里面加载XAML文件,

//从外部文件获取xaml的内容
DependencyObject rootElement;//定义一个依赖来接收xaml文件读取的内容
using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
{
    rootElement = (DependencyObject)XamlReader.Load(fs);
}
this.Content = rootElement;//将依赖的内容赋值给窗体的content属性
            
//从xaml的内容中找到button1名字的按钮,并赋值给mybutton对象
myButton = (Button)LogicalTreeHelper.FindLogicalNode(rootElement, "button1");

加载主要用到了XamlReader.Load这个函数,需要的参数就是我们构造函数传进来的XAML文件的名字

如果需要对XAML里面的组件进行操作,比如加一些响应函数,那么我们需要在主窗口类里面添加一个对应组件的私有变量,然后利用LogicalTreeHelper.FindLogicalNode()这个函数,第一个参数为xaml读取的依赖变量,第二个参数是要操作的组件名字。

我们试着对xaml中定义的按钮组件button1添加一个响应函数

在重载的构造函数加入按钮响应函数的指定代码

//添加事件处理程序
myButton.Click += myButton_Click;

 然后在主窗口类中对这个响应函数进行声明并实现

private void myButton_Click(object sender, RoutedEventArgs e)
{
    myButton.Content = "成功";
}

 xaml的文件的内容主要如下:(并且该文件需要放到工程的DEBUG目录下)

下面是结果(左图为单击之前,右图为单击后):

               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值