2009-01-06 30 views
3

在我們的應用程序中,我們允許安裝的管理員設計名稱標籤的模板,這些名稱標籤在從售貨機辦理登機手續時打印(有點像在自助服務終端登機並打印登機牌)。在我的應用程序中託管一個裸機XAML編輯器?

例如,模板看起來是這樣的:

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

現在,我們使用Reporting Services,讓我們的管理員能夠設計模板的名稱標籤(有些人可能想的人的圖片,打印出的條形碼,他們組織的名稱等)。這工作正常,但1)報告服務渲染緩慢,2)它沒有很好地與我們的應用程序集成 - 他們必須加載Visual Studio並在我們的應用程序之外設計名稱標籤。

XAML似乎非常適合設計名稱標籤模板。實際上,任何設計都可以使用該格式進行處理,我們可以使用XAML到XPS進行打印。

我看到的問題是如何集成使用可用XAML控件子集的可視化設計器。我們實際上只需要簡單的控件,例如Canvas,Grid,TextBlock,Image等,以及拖放支持。 我沒有找到關於是否有可能將Visual Studio或Sparkle的XAML設計器託管到單獨的應用程序中的很多信息。有人有主意嗎? RichTextBox看起來好像幾乎可以工作,但FlowDocument並不是真的想要我們想要的。我們需要能夠拖動項目並絕對放置它們(如在報表設計器中)。

回答

3

我不確定您是否可以託管MS設計師(儘管我懷疑它),但我認爲您可以相當簡單地製作自己的迷你編輯器。從Canvas開始,並以編程方式添加Label s,TextBlock s或其他任何你想要的東西(用Click處理程序將它們連接起來,通過Canvas.Top/Canvas.Left移動它們)。您可以非常容易地將Canvas渲染爲圖像,或者像您提到的那樣將Xaml-Xps打印出來。

查看Kaxaml作爲已經掀起迷你Xaml編輯器(最近更新爲SL2)的人的示例。也可能有其他人。

編輯26-Jan-09:還查看Charles Petzold的XamlCruncherexample) - 肯定會加載Visual Studio - 好像XamlReader.Load可能值得嘗試?