avalonia-viewmodels-zafiro
بناء تطبيقات واجهة مستخدم Avalonia تفاعلية باستخدام أنماط Zafiro
يتطلب إنشاء تطبيقات Avalonia قابلة للصيانة أنماط ViewModel وهياكل تنقل متسقة. توفر هذه المهارة أنماطًا مثبتة لأدوات ReactiveUI و Zafiro لتطوير واجهات مستخدم قوية.
تنزيل ZIP المهارة
رفع في Claude
اذهب إلى Settings → Capabilities → Skills → Upload skill
فعّل وابدأ الاستخدام
اختبرها
استخدام "avalonia-viewmodels-zafiro". أنشئ ViewModel لشاشة تسجيل الدخول مع حقلي اسم المستخدم وكلمة المرور
النتيجة المتوقعة:
فئة جزئية LoginViewModel ترث من ReactiveObject مع سمات [Reactive] لخصائص Username و Password، و LoginCommand تم إنشاؤه عبر ReactiveCommand.CreateFromTask مع التحقق من الصحة، وتنفيذ IDisposable مناسب مع CompositeDisposable للتنظيف.
استخدام "avalonia-viewmodels-zafiro". كيف أنتقل من HomeViewModel إلى DetailsViewModel عندما ينقر المستخدم على عنصر؟
النتيجة المتوقعة:
احقن INavigator في مُنشئ HomeViewModel، ثم استدعِ await navigator.Navigate(() => new DetailsViewModel(selectedItem) في معالج التحديد الخاص بك. يقوم DataTypeViewLocator تلقائيًا بحل DetailsView المقابل.
التدقيق الأمني
آمن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.
درجة الجودة
ماذا يمكنك بناءه
تطبيق سطح مكتب مع أقسام وحدات نمطية
بناء تطبيق محفظة مع أقsections مكتشفة تلقائيًا مثل Wallet و Browse و Settings باستخدام سمات [Section] و INavigator للتنقل السلس بين العروض.
تطبيق سير عمل متعدد الخطوات معقد
إنشاء معالجات إعداد المشروع مع التحقق من الصحة وتتبع التقدم والتنقل الشرطي باستخدام WizardBuilder لتحديد الخطوات مع قواعد WhenValid و NextCommand.
إعداد بنية الأوامر التفاعلية
إنشاء أنماط أوامر قوية مع معالجة الأخطاء عبر HandleErrorsWith، وإدارة المُصرفات التلقائية مع CompositeDisposable، ومراقبة خصائص تفاعلية باستخدام WhenAnyValue.
جرّب هذه الموجهات
أنشئ ViewModel ReactiveUI لشاشة ملف تعريف المستخدم مع خصائص Name و Email و IsBusy. ضمّن أمر Save يتحقق من تنسيق البريد الإلكتروني قبل التنفيذ. استخدم سمات [Reactive] والتعامل المناسب مع المُصرفات.
أظهر لي كيفية تطبيق تنقل شريط جانبي مع ثلاثة أقسام: Dashboard و Reports و Settings. استخدم السمة [Section] مع أيقونات FontAwesome ووضح كيفية التبديل بين الأقسام باستخدام IShellViewModel.
ابنِ معالجًا لإنشاء مشروع جديد بأربع خطوات: Project Info و Select Template و Configure Settings و Review. يجب التحقق من صحة كل خطوة قبل المتابعة. استخدم WizardBuilder مع قواعد WhenValid ووضح كيفية التعامل مع النتيجة النهائية.
وضح إنشاء IEnhancedCommand لمزامنة البيانات يُظهر التقدم ويتعامل مع الأخطاء عبر NotificationService ويُصرف الاشتراكات بشكل صحيح. ضمّن دعم الإلغاء ومنطق تمكين/تعطيل تفاعلي بناءً على حالة الاتصال.
أفضل الممارسات
- استخدم دائمًا .DisposeWith(disposables) على الاشتراكات والأوامر لمنع تسرب الذاكرة في التدفقات التفاعلية
- علّم section ViewModels بالسمة [Section] للتسجيل التلقائي بدلاً من التوصيل اليدوي في CompositionRoot
- استخدم امتداد HandleErrorsWith لتوجيه أخطاء الأوامر إلى NotificationService للحصول على ملاحظات مستخدم متسقة
تجنب
- لا تقم بإنشاء مثيلات ViewModels يدويًا باستخدام 'new' خارج طرق المصنع - استخدم حقن التبعيات عبر CompositionRoot
- تجنب الاشتراك في الملاحظات دون إضافتها إلى CompositeDisposable - هذا يسبب تسرب الذاكرة
- لا تقم بحظر العمليات غير المتزامنة في تنفيذ الأوامر - استخدم دائمًا CreateFromTask واستدعيات await للتنقل
الأسئلة المتكررة
ما التبعيات التي أحتاجها لاستخدام هذه الأنماط؟
كيف يعمل الاكتشاف التلقائي للأقسام؟
هل يمكنني استخدام هذه الأنماط بدون مجموعة أدوات Zafiro الكاملة؟
كيف أتعامل مع التحقق من الصحة في خطوات المعالج؟
ما الغرض من IEnhancedCommand مقارنة بـ ICommand القياسي؟
كيف أختبر ViewModels التي تم إنشاؤها بهذه الأنماط؟
تفاصيل المطور
المؤلف
sickn33الترخيص
MIT
المستودع
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/avalonia-viewmodels-zafiroمرجع
main
بنية الملفات