【问题标题】:Xaml not WPFXaml 不是 WPF
【发布时间】:2013-11-04 02:14:24
【问题描述】:

我对使用 Xaml 和表达式混合在应用程序中创建用户界面很感兴趣。但是,由于目标架构的限制,我无法使用 WPF 或 C#。

所以,我感兴趣的是任何示例/现有项目或任何有此技术经验的人提供的关于使用 Xaml 的“纯”形式作为不与 WPF 绑定的规范语言的建议。

具体问题:

1) 是否可以在没有 WPF 元素或没有 C# 支持类的情况下使用 Blend + Xaml?

2) Xaml 解析器等的其他实现是否使用不同的架构,它们是否可以与混合或类似工具一起使用。

3) 是否有替代编辑器/设计器工具可以在这种情况下提供帮助?

我知道 MyXaml 和 MycroXaml 项目,并且在网上找到了很多关于 Xaml 的资源,但其中 99% 与 WPF 直接相关。这对于理解 Xaml 的概念很好,但对我需要的实现没有帮助。

非常感谢!

【问题讨论】:

    标签: xaml expression-blend


    【解决方案1】:

    您是否查看过 XAML 规范。 http://download.microsoft.com/download/0/A/6/0A6F7755-9AF5-448B-907D-13985ACCF53E/[MS-XAML].pdf

    XAML 2009 和 clr 4.0 中的 system.xaml.dll 可能会成为上帝送给你的礼物,如果你可以等待的话。

    这里是关于它的 PDC 演示文稿。 http://channel9.msdn.com/pdc2008/TL36/

    既然你说你不能使用 C#,我猜你不能使用 .net 框架??或使用单声道。据我所知,没有计划在 Mono 中实现 XAML 支持。因此,要么您必须编写自己的 XAML 解析器和对象图。

    当然,如果您愿意这样做,您可能需要等待 XAML 2009 规范,因为它对 xaml 语言进行了重大改进。

    道格拉斯

    【讨论】:

    • 您混淆了 Mono 对 XAML 和 WPF 的支持,XAML 是一种 xml 序列化/对象图表示。 WPF 和 Silverlight 是可以选择使用 XAML 创建的图形工具包。 mono 已经支持 XAML 很长时间了(从 silverlight 2.0 开始)。它现在(2010 年 12 月)支持在带有单声道的 linux 桌面上编写运行 silverlight 3.0 应用程序,但项目的构建过程有点手动。通过一些细心的工作,您可以在单声道上部署 silverlight 3.0 桌面应用程序,但现在远非易事。
    【解决方案2】:

    Silverlight 对您有帮助吗?现在有一个 Eclipse 插件可供您将 Silverlight 与 eclispe 一起使用。因此,您将能够使用 Expression blend 来设计您的 UI 并使用 Java 进行后端编码(我认为是未来计划)。查看此链接了解更多详情。 http://www.eclipse4sl.org/

    【讨论】:

      【解决方案3】:

      我使用基于 XAML 的 XML 文档作为新 AppMaker v3 的核心。我目前正在用 Ruby 解析它以生成各种输出,包括纯 XAML/C# WPF 应用程序。

      XAML 非常容易解析,尤其是在您采用 XPath 方法时:

      windows = []
      REXML::XPath.each(doc, "//Window") do |xml|
        windows << Window.new(xml)
      end
      
      #... invoking ...
      
      @items = []
      xml.each_element("Canvas/*") do |itemXML|
        @items << WindowItem.makeItem(itemXML)
      end
      

      我们需要更多信息的真正问题是您要生成什么样的 GUI。 XAML 中的 Canvas 显式位置布局易于解析并生成一些简单的 Win32 控件和绘图。如果您进入像 StackPanel 这样的基于约束的布局,那么您将不得不重新创建许多 WPF 行为。

      【讨论】:

        【解决方案4】:

        如果您不使用 WPF,那么 Xaml 作为其核心并不比 XML 好。 Xaml 有几种风格,但它们本质上是库形式的附加功能。您可以使用 Vanilla Xaml 作为基础,但实际上您必须构建一个读取它的解析器,然后构建一个它本质上映射到的代码框架。 Xaml 不知道 StackPanel 是什么,它本质上将文本数据发送出去,以便由任何知道它是什么的人编译,这是您将缺少的部分,并且它是一个相当大的部分。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 2023-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-16
          相关资源
          最近更新 更多