Silverlight 4 تاریخ شمسی را از دات نت فریم ورک به ارث نبرده است (
+). اما اضافه کردن آن کار خاصی نیست. مجموعهی سورس باز Silverlight toolkit هم دارای DatePicker تاریخ میلادی است اما به دلایلی که عرض شد، تاریخ شمسی را پشتیبانی نمیکند.
کارهایی که توسط سایر برنامه نویسهای ایرانی تابحال در این مورد انجام شده است:
- اضافه کردن DatePicker فارسی به مجموعهی Silverlight toolkit : (
+)
به دو دلیل من از این راه حل استفاده نخواهم کرد:
الف) patch ارائه شده هنوز با Silverlight toolkit یکپارچه نشده است و هربار باید این تغییرات را اعمال کرد و غیره ...
ب) شاید من اصلا نخواهم که از Silverlight toolkit استفاده کنم. آن وقت چه باید کرد؟
این تنها کاری است که جهت Silverlight انجام شده است.
دو نمونهی خوب دیگر هم برای WPF موجود است که تبدیل آنها به Silverlight کار سادهای نیست (چون Silverlight تمام کلاسهای WPF را نیز به ارث نبرده است):
-
Farsi Library - Working with Dates, Calendars, and DatePickers-
PersianDate and some WPF controls for itبه همین جهت یک کنترل DatePicker و تقویم شمسی مستقل را برای Silverlight 4 آماده کردهام که از آدرس ذیل قابل دریافت است:
نحوه استفاده:
الف) ارجاعی را به اسمبلی SilverlightPersianDatePicker.dll به پروژه خود اضافه کنید. اگر مباحث library caching هم برای شما مهم است، فایل SilverlightPersianDatePicker.extmap.xml پیوست شده را نیز
فراموش نکنید.
ب) xmlns آن باید به XAML جاری اضافه شود؛ برای مثال:
xmlns:dp="clr-namespace:SilverlightPersianDatePicker.Views;assembly=SilverlightPersianDatePicker"
ج) سپس استفاده از آن به سادگی یک سطر زیر خواهد بود:
<dp:PDatePicker x:Name="txtDate" TextBoxWidth="100" Margin="5" />
خاصیت SelectedDate آن تاریخ میلادی و خاصیت SelectedPersianDate آن تاریخ شمسی را بر میگرداند.
کتابخانههای کمکی که در حین توسعهی آن استفاده شدند:
کلاس تقویم شمسی امید خندان راد (که برای روزهای دات نت 1 تهیه شده بود).
پنل UniformGrid که در Silverlight موجود نیست.(
+)
رفتار StaysOpen مرتبط با Popup که در Silverlight از WPF به ارث نرسیده است.(
+)
استفاده از کلاس DelegateCommand جان پاپا (برای سهولت Commanding در الگوی MVVM). (
+)