通过 PythonNet 使用 XAML 混合编程

本文探讨如何使用PythonNet结合XAML进行WPF界面编程。通过介绍XamlReader加载XAML的功能,讨论了在Python中实现XAML动态加载的挑战,并提出了三种编程模式:纯代码、XAML动态加载混合编码、XAML编译成资源后混合编码。示例程序展示了一个使用GridPanel布局,包含两个按钮的简单界面。
摘要由CSDN通过智能技术生成

昨天的文章里,我介绍了如何利用 PythonNet 来从 Python 中调用 WPF 类库。这只是第一步。接下来将面临的挑战是,如何有效的应付复杂多变的 UI 设计呢?XAML 语言是用来解决这个问题的,它将界面设计与编程逻辑分割开来。但是 XAML 在 Visual Studio 中是通过很多工具来自动产生连接代码的。对于我们的纯手工打造的 Python 程序,如何能利用好 XAML 工具呢?

其实,WPF 类库的 Markup 名字空间下提供的 XamlReader 类就提供了动态加载 XAML 语言的功能。但关键是,用 XamlReader 语言加载的 XAML 语言中不能含有事件属性,你不能简单地在 Button 标签中添加 Click=”xxx” 属性。

这个问题的解决,其实是要求有一个良好的程序结构。在用 Visual Studio 生成的 C# 工程中,WPF 向导为我们自动配置好了这些,比如界面设计的 xxx.xaml 文件,界面的事件响应程序文件(也叫隐藏文件)xxx.xaml.cs ,以及自动生成的 xxx.g.cs 文件和 baml 文件。编译过程中,首先将 xaml 文件编译成 baml 文件,也就是二进制的格式,减少空间占有,然后将其打包进程序的资源里,在自动生成的 xxx.g.cs 文件中,程序从打包的资源里加载 baml ,然后安装事件响应程序。

所有这些自动的过程,在用 Python 编写的时候,只能改由我们手工打造了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值