Come implementare convalide in fase di progettazione per XAML, che si traducono in errori di compilazione?
-
22-07-2019 - |
Domanda
Come imporre che gli sviluppatori che scrivono XAML in Visual Studio debbano seguire determinati standard e devono essere eseguite convalide e se vengono generati errori di tempo di compilazione non validi.
Ad esempio, assicurandosi che tutte le espressioni di database (alcune siano molto lunghe) siano scritte correttamente secondo "una convalida personalizzata" che vorrei implementare, durante la fase di progettazione. Come,
<TextBox Text="{Binding Source={StaticResource CALCULATED}, Converter={StaticResource XPathConverter}, ConverterParameter=@FIRSTNAME_STRING, XPath=@FIRSTNAME}"/>
Nell'esempio sopra riportato se l'espressione vincolante nella proprietà Text non è in quel formato , dovrebbe esserci un errore di compilazione .
C'è un modo per farlo?
Soluzione
Siamo spiacenti, il servizio di lingua XAML non può essere esteso in questo modo. Il modo migliore per farlo oggi è creare un'attività di compilazione. Penso che puoi collegarlo al target MarkupCompilePass1DependsOn e verrà invocato automaticamente quando l'utente salva o modifica un file XAML. Devi ancora scansionare il file in modo ridondante da noi, ma non devi aspettare una vera build per farlo funzionare. Questa è una citazione diretta di uno degli architetti Microsoft che attualmente sta lavorando ai progettisti di WPF.
Altri suggerimenti
Non esiste un modo integrato per farlo. Il modo migliore per ottenere questo risultato è eseguire uno strumento personalizzato sull'input. Ciò richiederà molto lavoro da parte tua da parte tua perché comporterà l'analisi del file da solo, ma dovresti essere in grado di far funzionare questo scenario.
Sito di esempio per la creazione di un generatore personalizzato
http://www.drewnoakes.com/snippets/WritingACustomCodeGeneratorToolForVisualStudio/