新手问题 新手问题 blend 与 ironruby 协同工作的问题

mortimercui · 2014年02月25日 · 最后由 mortimercui 回复于 2014年02月26日 · 1650 次阅读

一个小项目,我准备用 blend 来开发 WPF 界面,并用 ironruby 解析 blend 生成的 xaml 文件。但是遇到了问题。为了排除问题,我试验了一个最简情况。用 blend 新建一个 WPF 界面,这时 blend 生成了两个 xaml 文件:app.xaml 和 mainwindow.xaml。我在 ironruby 里解析 mainwindow.xaml 文件,主要代码如下

mainwnd_xaml = File.open("mainwindow.xaml", "r").read mainwnd = System::Windows::Markup::XamlReader.parse(mainwnd_xaml) dpc_app = System::Windows::Application.new dpc_app.run mainwnd

运行后报错: PresentationFramework:0 in 'load' (System::Windows::Markup::XamlParseException) from PresentationFramework:0 in 'load' from PresentationFramework:0 in 'parse'

如果我把 mainwindow.xaml 里面的内容替换为一个从其他地方抄的 gui 界面代码就不会有问题,可见环境配置方面没有问题。我也仔细对比过 blend 生成的 xaml 代码,与其他地方抄的 gui 界面代码,没有明显的区别。不知道问题究竟出在哪里?

过了一晚上也没有人回答。自己回答吧。 问题基本想明白了,就差最后的实践了。

昨天把与其他地方抄的 gui 界面代码拷贝到 blend 生成的 mainwindow.xaml 中,发现仍然出错。 用 UE 打开两个文件对比,发现,blend 生成的 mainwindow.xaml 头部有三个字节,标志 UTF-8 BOM,正是这个导致 mainwnd_xaml = File.open("mainwindow.xaml", "r").read 语句读取的不正确,从而进一步导致 mainwnd = System::Windows::Markup::XamlReader.parse(mainwnd_xaml) 语句报错。

没想到问题居然出在这里,真够郁闷的了,好歹最终解决了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号