技能 avalonia-viewmodels-zafiro
📦

avalonia-viewmodels-zafiro

安全

Créer des applications Avalonia UI réactives avec les modèles Zafiro

La création d'applications Avalonia maintenables nécessite des modèles ViewModel cohérents et des structures de navigation. Cette compétence fournit des modèles éprouvés ReactiveUI et Zafiro toolkit pour un développement UI robuste.

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

下载技能 ZIP

2

在 Claude 中上传

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

3

开启并开始使用

测试它

正在使用“avalonia-viewmodels-zafiro”。 Générer un ViewModel pour un écran de connexion avec les champs nom d'utilisateur et mot de passe

预期结果:

Une classe partielle LoginViewModel héritant de ReactiveObject avec les attributs [Reactive] pour les propriétés Username et Password, une LoginCommand créée via ReactiveCommand.CreateFromTask avec validation, et une implémentation IDisposable appropriée avec CompositeDisposable pour le nettoyage.

正在使用“avalonia-viewmodels-zafiro”。 Comment naviguer de HomeViewModel vers DetailsViewModel lorsqu'un utilisateur clique sur un élément ?

预期结果:

Injecter INavigator dans le constructeur de HomeViewModel, puis appeler await navigator.Navigate(() => new DetailsViewModel(selectedItem)) dans votre gestionnaire de sélection. Le DataTypeViewResolver résout automatiquement la vue DetailsView correspondante.

安全审计

安全
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
规范符合性

你能构建什么

Application de bureau avec sections modulaires

Construire une application de portefeuille avec des sections automatiquement découvertes comme Wallet, Browse et Settings en utilisant les attributs [Section] et INavigator pour une navigation fluide entre les vues.

Implémentation de flux de travail multi-étapes complexes

Créer des assistants de configuration de projet avec validation, suivi de progression et navigation conditionnelle en utilisant WizardBuilder pour définir les étapes avec les règles WhenValid et NextCommand.

Configuration de l'infrastructure de commandes réactives

Établir des modèles de commandes robustes avec gestion des erreurs via HandleErrorsWith, gestion automatique des disposables avec CompositeDisposable, et observation réactive des propriétés avec WhenAnyValue.

试试这些提示

Création basique d'un ViewModel
Créer un ViewModel ReactiveUI pour un écran de profil utilisateur avec les propriétés Name, Email et IsBusy. Inclure une commande Save qui valide le format de l'exécution avant l'exécution. Utiliser les attributs [Reactive] et une gestion appropriée des disposables.
Configuration de la navigation basée sur les sections
Montrez-moi comment implémenter une navigation latérale avec trois sections : Dashboard, Reports et Settings. Utiliser l'attribut [Section] avec des icônes FontAwesome et démontrer comment basculer entre les sections en utilisant IShellViewModel.
Assistant multi-étapes avec validation
Créer un assistant pour un nouveau projet avec quatre étapes : Project Info, Select Template, Configure Settings et Review. Chaque étape doit valider avant de procéder. Utiliser WizardBuilder avec les règles WhenValid et montrer comment gérer le résultat final.
Commande améliorée avec gestion des erreurs
Démontrer la création d'un IEnhancedCommand pour la synchronisation de données qui affiche la progression, gère les erreurs via NotificationService et dispose correctement des abonnements. Inclure le support de l'annulation et la logique réactive d'activation/désactivation basée sur l'état de connexion.

最佳实践

  • Toujours utiliser .DisposeWith(disposables) sur les abonnements et les commandes pour éviter les fuites de mémoire dans les flux réactifs
  • Marquer les ViewModels de section avec l'attribut [Section] pour l'enregistrement automatique au lieu du câblage manuel dans CompositionRoot
  • Utiliser l'extension HandleErrorsWith pour canaliser les erreurs de commande vers NotificationService pour un retour utilisateur cohérent

避免

  • Ne pas instancier manuellement les ViewModels avec 'new' en dehors des méthodes factory - utiliser l'injection de dépendances via CompositionRoot
  • Éviter de s'abonner aux observables sans les ajouter à CompositeDisposable - cela provoque des fuites de mémoire
  • Ne jamais bloquer les opérations asynchrones dans l'exécution des commandes - toujours utiliser CreateFromTask et await pour les appels de navigation

常见问题

Quelles dépendances dois-je utiliser pour ces modèles ?
Vous avez besoin d'Avalonia UI, ReactiveUI, ReactiveUI.SourceGenerators et du Zafiro toolkit. Ajoutez-les via les packages NuGet à votre fichier de projet.
Comment fonctionne la découverte automatique des sections ?
L'attribut [Section] marque les ViewModels comme des sections. AddSectionsFromAttributes de Zafiro scanne les assemblies au démarrage et enregistre les types marqués avec le conteneur d'injection de dépendances.
Puis-je utiliser ces modèles sans le Zafiro toolkit complet ?
Oui, les modèles ReactiveUI de base fonctionnent indépendamment. Cependant, SlimWizard, IEnhancedCommand et la découverte de sections nécessitent les composants Zafiro.
Comment gérer la validation dans les étapes de l'assistant ?
Implémentez la validation dans votre ViewModel d'étape en utilisant WhenAnyValue pour observer les changements de propriété et définir un indicateur de validité. Utilisez .WhenValid() dans WizardBuilder pour bloquer la navigation jusqu'à ce que la validation passe.
Quel est le but de IEnhancedCommand par rapport à ICommand standard ?
IEnhancedCommand étend ICommand avec les métadonnées Name et Text pour la liaison UI, plus le rapport de progression intégré et l'intégration de gestion des erreurs avec NotificationService.
Comment tester les ViewModels créés avec ces modèles ?
Les ViewModels sont des classes simples avec des dépendances injectables. Utilisez moq ou NSubstitute pour les mocks, et testez les propriétés réactives en utilisant ReactiveUI.Testing ou en observant directement les changements de propriété.