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