Ospitare un editor XAML bare-bones nella mia applicazione?
-
03-07-2019 - |
Domanda
Nella nostra applicazione, consentiamo agli amministratori di un'installazione di progettare modelli per etichette nome che vengono stampate quando effettuano il check-in da un chiosco (una specie di check-in per un volo in un chiosco e stampa di una carta d'imbarco).
Ad esempio, il modello potrebbe assomigliare a questo:
[FirstName] [LastName]
[Company]
[PersonImage]
[BarCode]
Al momento, utilizziamo Reporting Services per consentire ai nostri amministratori di progettare modelli per etichette nome (alcuni potrebbero desiderare un'immagine della persona, un codice a barre stampato, il nome della loro organizzazione, ecc.). Funziona bene, ma 1) Reporting Services è lento per il rendering e 2) non è integrato molto bene con la nostra applicazione - devono caricare Visual Studio e progettare il nome tag al di fuori della nostra applicazione.
XAML sembra adatto per la progettazione del modello per etichette nome. Praticamente qualsiasi progetto potrebbe essere gestito con il formato e potremmo usare XAML su XPS per stampare.
Il problema che vedo è come integrare un visual designer che utilizza un sottoinsieme di controlli XAML disponibili. Avremmo davvero bisogno solo di semplici controlli come Canvas, Grid, TextBlock, Image, ecc. Con supporto drag / drop. Non trovo molte informazioni sulla possibilità di ospitare Visual Studio o il designer XAML di Sparkle in un'applicazione separata. Qualcuno ha qualche idea? Il RichTextBox sembra quasi funzionare, ma un FlowDocument non è proprio quello che vogliamo. Dobbiamo essere in grado di trascinare gli elementi in giro e posizionarli assolutamente (come in un progettista di report).
Soluzione
Non sono sicuro di poter ospitare i designer di MS (anche se ne dubito), ma penso che potresti essere in grado di produrre il tuo mini-editor in modo abbastanza semplice. Inizia con un Canvas
e aggiungi a livello di codice Label
, TextBlock
o qualsiasi altra cosa tu voglia (collegali con Fai clic su
gestori per spostarli tramite Canvas.Top
/ Canvas.Left
). Puoi eseguire il rendering del Canvas
su un'immagine abbastanza facilmente per la stampa, o Xaml-Xps come hai menzionato.
Guarda Kaxaml come esempio di qualcuno che ha già installato un mini editor Xaml (è stato recentemente aggiornato a SL2). Potrebbero essercene anche altri là fuori.
EDIT 26-Jan-09: controlla anche XamlCruncher ( esempio ) - sicuramente batte il caricamento di Visual Studio - sembra che XamlReader.Load
valga la pena provare?