松散 XAML 有哪些限制?
-
03-07-2019 - |
题
我一直在尝试使用 WPF 并在 Web 浏览器中渲染严格的 XAML 标记,也称为松散 XAML(解释为 这里 和 这里).
我觉得它对于显示静态内容最有用。然而,绑定到 XML 数据提供者似乎也是可能的。
松散的 XAML 文件不与应用程序一起编译,这会产生以下限制:
- 他们不允许外部组装
- 不使用类、代码隐藏(或任何 C#)
- 没有双向数据绑定
还有哪些额外限制?
- 我还没有找到将数据绑定到数据库提供程序(SQL Server)的方法
- 客户端计算机上是否需要 .NET Framework 才能在浏览器中呈现 XAML?
- 搜索引擎是否能够询问松散的XAML以适当排名页面?
编辑:我尝试将 XML 数据提供程序绑定到 Web 服务(使用 这 简单的例子)但没有成功。这些发现引导我进行进一步的研究,我发现这不受支持:“ XMLDATAPROVIDER设计为仅阅读(换句话说,它没有提供提交更改的能力),并且无法处理可能来自其他来源的XML数据(例如数据库记录,网络服务消息,等等)。” -Matthew MacDonald, 专业WPF
解决方案
AFAIK 在 XAML 中定义连接字符串是不可能的。所以你无法访问你的 SQL 数据库。
笔记:但是可以使用 XmlDataProvider 将数据绑定到 Web 服务。所以这可能是你发送数据的一种方式......
编辑:顺便说一句,我发现了这个 沙盒环境的功能列表, ,当使用 XBAP 和松散的 XAML 时,您的应用程序正在其中运行。它有点过时了,但可能大多数限制仍然适用。
其他提示
至少需要框架 3.0 才能在 IE 中查看松散的 XAML 页面。您甚至可以通过在用户代理字符串中查找“.NET CLR 3.0”来在您的站点上进行检查。
数据库连接(即使可能)也不会直接在松散的 XAML 中完成,因为需要过程代码来打开连接。
我在托管动态语言运行时 (DLR) 和允许将脚本嵌入 XAML 方面做了很多工作。我现在觉得 Loose XAML 不是二等公民,因为我可以处理事件、编写值转换器、运行 Python/Ruby/JScript 来执行连接到 SQL Server 等操作。
看我的 博客 看看这个方向是否适合你。
我使用附加属性动态加载程序集 - 加载后,您可以以通常的方式引用程序集中的类。
因此,也回答这个问题,开箱即用的松散 XAML 有许多限制(例如无法将事件路由到事件处理程序),但这些可以通过一些工作来克服。
我仅将 XAML/WPF 用于桌面应用程序。希望其他人能够回答您浏览器的特定问题。
我有一个在商业工作中用于 DLR 托管和在 XAML 中嵌入 DLR 脚本的库,我一直打算将其变成受支持的产品。如果您对此感兴趣,请务必告诉我。