在我的应用程序中托管一个简单的XAML编辑器?

时间:2009-01-06 16:11:35

标签: wpf reporting-services reporting

在我们的应用程序中,我们允许安装管理员为从信息亭办理登机手续时打印的名称标签设计模板(有点像在自助服务终端办理登机手续并打印登机牌)。

例如,模板可能如下所示:

[FirstName] [LastName]
[Company]
[PersonImage]
[BarCode]

现在,我们使用Reporting Services来允许我们的管理员为名称标签设计模板(有些人可能想要人物照片,打印条形码,组织名称等)。这工作正常,但1)Reporting Services渲染速度慢,2)它没有很好地与我们的应用程序集成 - 他们必须加载Visual Studio并在我们的应用程序之外设计名称标签。

XAML似乎非常适合设计名称标签的模板。事实上,任何设计都可以用格式处理,我们可以使用XAML到XPS进行打印。

我遇到的问题是如何集成使用可用XAML控件子集的可视化设计器。我们真的只需要拖放支持等简单的控件,如Canvas,Grid,TextBlock,Image等。 我没有找到关于是否可以将Visual Studio或Sparkle的XAML设计器托管到单独的应用程序中的信息。任何人有任何想法? RichTextBox看起来几乎可以工作,但FlowDocument并不是我们真正想要的。我们需要能够拖动项目并绝对定位它们(​​就像在报表设计器中一样)。

1 个答案:

答案 0 :(得分:3)

我不确定你是否可以主持MS设计师(尽管我对此表示怀疑),但我认为你可以相当简单地制作自己的迷你编辑器。从Canvas开始,然后以编程方式添加LabelTextBlock或其他任何您想要的内容(通过Click处理程序与他们联系,以便通过Canvas.Top移动它们/ Canvas.Left)。您可以非常轻松地将Canvas呈现给图像以进行打印,或者如您所提到的那样将Xaml-Xps呈现。

查看Kaxaml作为已经掀起迷你Xaml编辑器(最近更新为SL2)的人的示例。那里也可能有其他人。

编辑2009年1月26日:查看Charles Petzold的XamlCruncherexample) - 肯定会加载Visual Studio - 似乎XamlReader.Load可能值得一试?