Wie Design-Zeit Validierungen für XAML, die zur Folge haben in der Kompilierung Fehler implementieren?

StackOverflow https://stackoverflow.com/questions/335645

Frage

Wie erzwingen, dass die Entwickler XAML in Visual Studio Schreiben bestimmte Standards folgen sollten und Validierungen müssen ausgeführt werden und wenn ungültige Kompilierung Fehler ausgelöst werden.

Zum Beispiel, um sicherzustellen, dass alle Datenbindung Ausdrücke (einige sind real lang) geschrieben werden korrekt nach ‚einer benutzerdefinierten Validierung‘ würde Ich mag implementieren, während der Entwurfszeit. Wie,

<TextBox Text="{Binding Source={StaticResource CALCULATED}, Converter={StaticResource XPathConverter}, ConverterParameter=@FIRSTNAME_STRING, XPath=@FIRSTNAME}"/>

In dem obigen Beispiel, wenn die Bindungsausdruck in der Text-Eigenschaft ist nicht in diesem Format , sollte es eine Übersetzungsfehler sein .

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Es tut uns Leid, das XAML Sprachdienst kann nicht auf diese Weise entweder verlängert werden. Der beste Weg, dies heute zu tun ist, ein Build-Task an Autor. Ich denke, dass Sie es in das MarkupCompilePass1DependsOn Ziel Haken und es wird automatisch aufgerufen, wenn der Benutzer speichert oder ändert eine XAML-Datei. Sie haben noch die Datei redundant von uns zu scannen, aber Sie müssen nicht für einen tatsächlichen Build warten, um diese Arbeit zu machen. Dies ist ein direktes Zitat aus einem der Microsoft Architekten, die derzeit auf den WPF-Designern arbeiten.

Andere Tipps

Es gibt keine eingebaute Möglichkeit, dies zu tun. Der beste Weg, werden Sie in der Lage sein, dieses Ergebnis zu erhalten, ist ein Anpassungs-Tool auf dem Eingang laufen. Dies wird eine Menge Beinarbeit auf Ihrer Seite, weil es die Datei selbst beinhalten wird das Parsen, aber Sie sollten dieses Szenario bekommen arbeiten können.

Beispiel-Website für das Erstellen eines benutzerdefinierten Generators

http://www.drewnoakes.com/snippets/WritingACustomCodeGeneratorToolForVisualStudio/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top