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.
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“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.
安全审计
安全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.
质量评分
你能构建什么
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.
试试这些提示
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.
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.
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.
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?
Wie funktioniert die automatische Abschnittserkennung?
Kann ich diese Muster ohne das vollständige Zafiro-Toolkit verwenden?
Wie behandele ich die Validierung in Assistentenschritten?
Was ist der Zweck von IEnhancedCommand gegenüber Standard-ICommand?
Wie teste ich ViewModels, die mit diesen Mustern erstellt wurden?
开发者详情
作者
sickn33许可证
MIT
仓库
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/avalonia-viewmodels-zafiro引用
main
文件结构