在我们的应用程序中,我们允许安装管理员设计姓名标签模板,这些模板在他们从自助服务亭办理登机手续时打印(有点像在自助服务亭办理登机手续并打印登机牌)。
例如,模板可能看起来像这样:
[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 并不是我们真正想要的。我们需要能够四处拖动项目并绝对定位它们(就像在报表设计器中一样)。
最佳答案
我不确定您是否可以托管 MS 设计器(尽管我对此表示怀疑),但我认为您可以相当简单地制作您自己的迷你编辑器。从 Canvas
开始,以编程方式添加 Label
、TextBlock
或您想要的任何其他内容(使用 Click
连接它们> 处理程序通过 Canvas.Top
/Canvas.Left
移动它们)。您可以很容易地将 Canvas
呈现为图像以进行打印,或者像您提到的那样使用 Xaml-Xps。
查看 Kaxaml作为已经启动了迷你 Xaml 编辑器(最近更新到 SL2)的人的示例。可能还有其他人。
编辑 2009 年 1 月 26 日:另请查看 Charles Petzold 的 XamlCruncher ( example ) - 肯定比加载 Visual Studio 好 - 似乎 XamlReader.Load
可能值得一试?
关于wpf - 在我的应用程序中托管基本的 XAML 编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417128/