技能 avalonia-viewmodels-zafiro
📦

avalonia-viewmodels-zafiro

安全

Entwickeln Sie reaktive Avalonia-UI-Anwendungen mit Zafiro-Mustern

Die Erstellung wartbarer Avalonia-Anwendungen erfordert konsistente ViewModel-Muster und Navigationsstrukturen. Diese Fähigkeit bietet bewährte ReactiveUI- und Zafiro-Toolkit-Muster für eine robuste UI-Entwicklung.

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“avalonia-viewmodels-zafiro”。 Generieren Sie ein ViewModel für einen Anmeldebildschirm mit Benutzernamen- und Passwortfeldern

预期结果:

Eine partielle Klasse LoginViewModel, die von ReactiveObject erbt, mit [Reactive]-Attributen für Username- und Password-Eigenschaften, einem LoginCommand, das über ReactiveCommand.CreateFromTask mit Validierung erstellt wurde, und ordnungsgemäßer IDisposable-Implementierung mit CompositeDisposable für die Bereinigung.

正在使用“avalonia-viewmodels-zafiro”。 Wie navigiere ich von HomeViewModel zu DetailsViewModel, wenn ein Benutzer auf ein Element klickt?

预期结果:

Injizieren Sie INavigator in den HomeViewModel-Konstruktor und rufen Sie dann in Ihrem Auswahlhandler await navigator.Navigate(() => new DetailsViewModel(selectedItem)) auf. Der DataTypeViewLocator löst automatisch die entsprechende DetailsView auf.

安全审计

安全
v1 • 2/24/2026

Static analyzer flagged 79 potential issues (71 external_commands, 8 blocker patterns). All findings are FALSE POSITIVES. The detected 'backtick execution' patterns are markdown code fence markers (```) and C# attribute syntax ([Section], [Reactive]). The 'blocker' patterns are documentation callouts ([!TIP], [!IMPORTANT]). This skill contains only documentation markdown files with C# code examples - no executable code or security risks exist.

5
已扫描文件
282
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

Desktop-Anwendung mit modularen Abschnitten

Erstellen Sie eine Wallet-Anwendung mit automatisch entdeckten Abschnitten wie Wallet, Browse und Settings unter Verwendung von [Section]-Attributen und INavigator für nahtlose Navigation zwischen Ansichten.

Implementierung komplexer Multi-Schritt-Workflows

Erstellen Sie Projekt-Einrichtungsassistenten mit Validierung, Fortschrittsverfolgung und bedingter Navigation unter Verwendung von WizardBuilder, um Schritte mit WhenValid- und NextCommand-Regeln zu definieren.

Einrichtung reaktiver Befehlsinfrastruktur

Etablieren Sie robuste Befehlsmuster mit Fehlerbehandlung über HandleErrorsWith, automatischer CompositeDisposable-Verwaltung und reaktiver Eigenschaftsbeobachtung mit WhenAnyValue.

试试这些提示

Grundlegende ViewModel-Erstellung
Erstellen Sie ein ReactiveUI-ViewModel für einen Benutzerprofilbildschirm mit Name-, E-Mail- und IsBusy-Eigenschaften. Fügen Sie einen Save-Befehl hinzu, der das E-Mail-Format vor der Ausführung validiert. Verwenden Sie [Reactive]-Attribute und ordnungsgemäße Disposable-Handhabung.
Einrichtung abschnittsbasierter Navigation
Zeigen Sie mir, wie man eine Seitenleisten-Navigation mit drei Abschnitten implementiert: Dashboard, Reports und Settings. Verwenden Sie das [Section]-Attribut mit FontAwesome-Icons und demonstrieren Sie, wie man mit IShellViewModel zwischen Abschnitten wechselt.
Multi-Schritt-Assistent mit Validierung
Erstellen Sie einen Assistenten zum Erstellen eines neuen Projekts mit vier Schritten: Projektinfo, Vorlage auswählen, Einstellungen konfigurieren und Überprüfung. Jeder Schritt muss vor dem Fortfahren validiert werden. Verwenden Sie WizardBuilder mit WhenValid-Regeln und zeigen Sie, wie das Endergebnis verarbeitet wird.
Erweiterter Befehl mit Fehlerbehandlung
Demonstrieren Sie die Erstellung eines IEnhancedCommand für die Datensynchronisation, die Fortschritt anzeigt, Fehler über NotificationService behandelt und Subscriptions ordnungsgemäß verwirft. Fügen Sie Abbruchunterstützung und reaktive Aktivierungs-/Deaktivierungslogik basierend auf dem Verbindungszustand hinzu.

最佳实践

  • Verwenden Sie immer .DisposeWith(disposables) bei Subscriptions und Befehlen, um Speicherlecks in reaktiven Streams zu verhindern
  • Markieren Sie Abschnitts-ViewModels mit dem [Section]-Attribut für automatische Registrierung anstatt manueller Verdrahtung in CompositionRoot
  • Verwenden Sie die HandleErrorsWith-Erweiterung, um Befehlsfehler an NotificationService für konsistentes Benutzerfeedback zu leiten

避免

  • Instanziieren Sie ViewModels außerhalb von Factory-Methoden nicht manuell mit 'new' - verwenden Sie Dependency Injection durch CompositionRoot
  • Vermeiden Sie das Abonnieren von Observables ohne Hinzufügen zu CompositeDisposable - dies verursacht Speicherlecks
  • Blockieren Sie niemals asynchrone Vorgänge in der Befehlsausführung - verwenden Sie immer CreateFromTask und await-Navigationsaufrufe

常见问题

Welche Abhängigkeiten benötige ich für diese Muster?
Sie benötigen Avalonia UI, ReactiveUI, ReactiveUI.SourceGenerators und das Zafiro-Toolkit. Fügen Sie diese über NuGet-Pakete zu Ihrer Projektdatei hinzu.
Wie funktioniert die automatische Abschnittserkennung?
Das [Section]-Attribut markiert ViewModels als Abschnitte. Zarifos AddSectionsFromAttributes durchsucht Assemblies beim Start und registriert markierte Typen im Dependency-Injection-Container.
Kann ich diese Muster ohne das vollständige Zafiro-Toolkit verwenden?
Ja, die grundlegenden ReactiveUI-Muster funktionieren unabhängig. SlimWizard, IEnhancedCommand und Abschnittserkennung erfordern jedoch Zafiro-Komponenten.
Wie behandele ich die Validierung in Assistentenschritten?
Implementieren Sie die Validierung in Ihrem Schritt-ViewModel mit WhenAnyValue, um Eigenschaftsänderungen zu beobachten und ein Gültigkeitsflag zu setzen. Verwenden Sie .WhenValid() im WizardBuilder, um die Navigation zu blockieren, bis die Validierung erfolgreich ist.
Was ist der Zweck von IEnhancedCommand gegenüber Standard-ICommand?
IEnhancedCommand erweitert ICommand um Name- und Text-Metadaten für UI-Bindung sowie integrierte Fortschrittsberichterstattung und Fehlerbehandlungsintegration mit NotificationService.
Wie teste ich ViewModels, die mit diesen Mustern erstellt wurden?
ViewModels sind einfache Klassen mit injizierbaren Abhängigkeiten. Verwenden Sie moq oder NSubstitute für Mocks und testen Sie reaktive Eigenschaften mit ReactiveUI.Testing oder durch direkte Beobachtung von Eigenschaftsänderungen.